Guest User

Untitled

a guest
Feb 20th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. class Human
  2. define :initialize |name|
  3. @name: name
  4.  
  5. define :name: |name: "none"|
  6. @name: name
  7.  
  8. define :attributes |name, age|
  9. @name: name if name
  10. @age: age if age
  11.  
  12. define :name
  13. @name
  14.  
  15. # implicit end of class Human (indent)
  16. end Human # explicit
  17.  
  18. literal: 'string'
  19. interpolated: "string %{code}"
  20. regex: /regular expression/
  21. array: { 1, 2, 3 }
  22. map: { "a": 1, "b": 2 }
  23. map2: Map.keys_to_values({"key1", "key2}, {"val1", "val2}) # => { "key1": "val1", "key2": "val2" }
  24.  
  25. regex: %r{regular expression}
  26. array: %w{ hello kitty } # => { "hello", "kitty" }
  27.  
  28. peter: Human.new("peter")
  29. if peter.name = "peter"
  30. print "It's a Peter"
  31. else
  32. print "It's not a peter"
  33.  
  34. peter.name: "paul"
  35. peter.attributes age: 15
  36. peter.attributes(age: 15)
  37. peter.attributes("peter", 15)
  38.  
  39. peter.age: 20
  40. # => 20
  41. peter.age:+ 5 # peter.age: peter.age + 5
  42. # => 25
  43. peter.age:- 5
  44. # => 20
  45. peter.age: -5 # unary minus, only no-space is considered unary
  46. # => -5
  47.  
  48. # assuming you overwrote Object.define
  49. class Other
  50. class metaclass # it is valid to retrieve the class to open
  51. define :define |method_name, &method_body|
  52. print "I hate this name '%{method_name}', I won't define it.\n"
  53.  
  54. define :foo # => prints "I hate this name 'foo', I won't define it."
  55. <Object>define :foo # uses the objects superclass' :define
  56. <Object>self.define :foo # the same as above, explicitly refering to self
  57.  
  58. # you can't overwrite Object.define in object itself
  59. class Object
  60. class metaclass
  61. define :define |method_name, &method_body| # throws a ProtectedMethodRedefinition exception
Add Comment
Please, Sign In to add comment