Jon*_*ero 1 ruby overriding metaprogramming
我搜索并尝试覆盖"for"关键字,但我什么也没找到.我正在尝试这样的事情:
def for("maybe_arguments_go_here")
print "Hello from function for!"
end
for i in 1..3
print "Hello from for"
end
Run Code Online (Sandbox Code Playgroud)
你不能覆盖关键字本身,但你可以做的一件事是说for
你自己的类是什么.内部for
调用each
,所以以下技巧将起作用:
class MyFor
def initialize(iterable)
@iterable = iterable
end
def each
@iterable.each do |x|
puts "hello from for!"
yield x
end
end
end
# convenient constructor
module Kernel
def my(x)
MyFor.new(x)
end
end
for i in my(1..3)
puts "my for yielded #{x}"
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
540 次 |
最近记录: |