Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Human
- define :initialize |name|
- @name: name
- define :name: |name: "none"|
- @name: name
- define :attributes |name, age|
- @name: name if name
- @age: age if age
- define :name
- @name
- # implicit end of class Human (indent)
- end Human # explicit
- literal: 'string'
- interpolated: "string %{code}"
- regex: /regular expression/
- array: { 1, 2, 3 }
- map: { "a": 1, "b": 2 }
- map2: Map.keys_to_values({"key1", "key2}, {"val1", "val2}) # => { "key1": "val1", "key2": "val2" }
- regex: %r{regular expression}
- array: %w{ hello kitty } # => { "hello", "kitty" }
- peter: Human.new("peter")
- if peter.name = "peter"
- print "It's a Peter"
- else
- print "It's not a peter"
- peter.name: "paul"
- peter.attributes age: 15
- peter.attributes(age: 15)
- peter.attributes("peter", 15)
- peter.age: 20
- # => 20
- peter.age:+ 5 # peter.age: peter.age + 5
- # => 25
- peter.age:- 5
- # => 20
- peter.age: -5 # unary minus, only no-space is considered unary
- # => -5
- # assuming you overwrote Object.define
- class Other
- class metaclass # it is valid to retrieve the class to open
- define :define |method_name, &method_body|
- print "I hate this name '%{method_name}', I won't define it.\n"
- define :foo # => prints "I hate this name 'foo', I won't define it."
- <Object>define :foo # uses the objects superclass' :define
- <Object>self.define :foo # the same as above, explicitly refering to self
- # you can't overwrite Object.define in object itself
- class Object
- class metaclass
- define :define |method_name, &method_body| # throws a ProtectedMethodRedefinition exception
Add Comment
Please, Sign In to add comment