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