我解释:
我想知道如何传递方法或函数作为参数。
例如,在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中,当你调用一个方法或函数时,你可以使用or没有圆括号。
如果我在Ruby中这样做:
require_relative "MyClass"
MyClass.new.my_method_click(function) # without parentheses
直接调用,不用发送。
当然,是一个按钮,当我点击它,运行这个操作。
我如何在Ruby中做到这一点?
谢谢!
基本上,您希望传递一个可运行的代码块。我还没有研究过Python,但我确信它也支持闭包。
无论如何,在Ruby中,传递可运行代码的"一般"方法是使用块(lambdas和进程)。
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
s和Proc
s更容易。