我经常在我的函数中创建小的 lambdas 来处理重复的任务,例如(人为的例子):
def some_method(foo)
match = SOME_REGEX.match foo
has_component = lambda { |name|
match.names.include? name and not match[name].nil?
}
if has_component.call("street_name")
# ...
end
if has_component.call("house_number")
# ...
end
if has_component.call("entrance")
# ...
end
# ...
end
现在我不了解你,但我更愿意写:
if has_component "street_name"
# ...
end
if has_component "house_number"
# ...
end
if has_component "entrance"
# ...
end
我不熟悉 Ruby 的内部工作原理,但是我可以用我的 lambda/proc 做些什么来让它像def
ined 函数一样可调用?
我不想在类级别将 lambda/proc 定义为方法的原因有很多。除其他外,它无法访问调用者的范围。