我解释说:
我想知道如何将方法或函数作为参数传递。
例如,在 Python 中将是:
from MyFile import MyClass
MyClass().my_method_click(function) # without parentheses
在此示例中,在 Python 中,您将发送函数或方法 括号,如果我这样做:
from MyFile import MyClass
MyClass().my_method_click(function()) # with parentheses
我致电该功能但未发送。
在 Ruby 中,当您调用方法或函数时,可以使用或执行此操作 没有括号。
如果我在Ruby中这样做:
require_relative "MyClass"
MyClass.new.my_method_click(function) # without parentheses
只需在不发送的情况下调用它。
当然,对于一个Button,当我点击它时,运行此操作。
我如何在Ruby中完成?
谢谢!
答案 0 :(得分:0)
基本上,您希望传递一个可运行的代码块。我还没有看过Python,但我相信它也支持闭包。
无论如何,在Ruby中,"将军"传递可运行代码的方法是使用块(lambdas和procs)。
function = lambda { # your code }
MyClass.new.my_method_click(function)
# or a shorter way
MyClass.new.my_method_click(-> { # your code })
# to run a block
def my_method_click(&block)
#you can either `yield` from your receiving method
yield
# or call `.call` method on your lambda/proc instance
block.call
end
您还可以获得班级的实例'方法或使用Method.new
创建一个新方法。但是,您最终会处理绑定并绑定到正确的实例类型等。因此,使用Lambda
和Proc
s会更容易。