0 400 0 def dbg_args(a, b=1, c:, d: 6, &block) = puts("Args passed: #{[a, b, c, d, block.call]}") 0 400 0 dbg_args(0, c: 5) { 7 } 1 400 0 2 400 0 + class A 0 401 0 | def attr = @attr 2 401 0 + def attr=(value) 0 402 0 | @attr = value 0 402 0 | end 0 401 0 | def attr? = !!@attr 0 401 0 | def attr! = @attr = true 0 401 0 | # unary operator 0 401 0 | def -@ = 1 0 401 0 | def +@ = 1 0 401 0 | def ! = 1 0 401 0 | def !@ = 1 0 401 0 | # binary operator 0 401 0 | def +(value) = 1 + value 0 401 0 | def -(value) = 1 - value 0 401 0 | def *(value) = 1 * value 0 401 0 | def **(value) = 1 ** value 0 401 0 | def /(value) = 1 / value 0 401 0 | def %(value) = 1 % value 0 401 0 | def &(value) = 1 & value 0 401 0 | def ^(value) = 1 ^ value 0 401 0 | def >>(value) = 1 >> value 0 401 0 | def <<(value) = 1 << value 0 401 0 | def ==(other) = true 0 401 0 | def !=(other) = true 0 401 0 | def ===(other) = true 0 401 0 | def =~(other) = true 0 401 0 | def <=>(other) = true 0 401 0 | def <(other) = true 0 401 0 | def <=(other) = true 0 401 0 | def >(other) = true 0 401 0 | def >=(other) = true 0 401 0 | # element reference and assignment 0 401 0 | def [](a, b) = puts(a + b) 2 401 0 + def []=(a, b, c) 0 402 0 | puts a + b + c 0 402 0 | end 0 401 0 | # array decomposition 0 401 0 | def dec(((a, b), c)) = puts(a + b + c) 0 401 0 | # class method 0 401 0 | def self.say(*s) = puts(s) 0 401 0 | # test short method name 0 401 0 | def a = 1 0 401 0 | def ab = 1 0 401 0 | end 1 400 0 0 400 0 # class method 2 400 0 + def String.hello 0 401 0 | "Hello, world!" 0 401 0 | end 0 400 0 # singleton method 0 400 0 greeting = "Hello" 2 400 0 + def greeting.broaden 0 401 0 | self + ", world!" 0 401 0 | end 0 400 0 # one line definition 0 400 0 def a(b, c) b; c end 0 400 0 # parentheses omitted 2 400 0 + def ab c 0 401 0 | puts c 0 401 0 | end 1 400 0 0 400 0 # Test folding of multi-line SCE_RB_STRING_QW 2 400 0 + puts %W( 0 401 0 | a 0 401 0 | b 0 401 0 | c 0 401 0 | ) 0 400 0