Sha256: d0761479977180a8865ce4b35b0320bf652ee031d8b1b3213368bec501f61433

Contents?: true

Size: 1.51 KB

Versions: 4

Compression:

Stored size: 1.51 KB

Contents

# class.fy
# Example of fancy's classes mechanism

class Bar {
  def initialize {
    Console println: "In Bar constructor!"
  }

  def say_hello: name {
    Console print: "Hello, "
    Console println: name
  }
}

class Foo : Bar {
  def initialize: name {
    Console println: "gonna set @name"
    @name = name
  }
  def say_hello {
    Console print: "Hello, "
    Console println: @name
    {@block call} if: @block
  }
  def on_hello_do: block {
    @block = block
  }
}

bar = Bar new
bar say_hello: "Chris"

foo = Foo new: "Chris from Constructor"
foo say_hello
foo on_hello_do: {
  Console println: "Call me when calling on_hello! :)"
}
foo say_hello

foo class println # print the class of foo

# define a singleton method on foo object
foo define_singleton_method: "foo!" with: {
  "In foo method :D" println
}

foo foo!

# define a 'normal' method on Foo class
# (instance method for all instances of Foo)
foo class define_method: "foo_for_all:" with: |x| {
  "In foo_for_all method (defined for all instances of Foo class)" println
  "Got argument: " ++ x println
}

foo2 = Foo new
foo2 foo_for_all: "hello, test! :)"
foo  foo_for_all: "hello, test (again)! :)"

# define a class method on Foo class
# it's the same as calling 'define_singleton_method:with:' on class
foo class define_class_method: "cool_class_method:" with: |arg| {
  "In class method for Foo! Argument given: " ++ arg println
}

# the following is the same as:
# foo class cool_class_method: "Some argument string"
Foo cool_class_method: "Some argument string"

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fancy-0.3.3 examples/class.fy
fancy-0.3.2 examples/class.fy
fancy-0.3.1 examples/class.fy
fancy-0.3.0 examples/class.fy