#Ruby Tk传递方法/函数作为参数



我解释:

我想知道如何传递方法或函数作为参数。

例如,在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更容易。

相关内容

  • 没有找到相关文章

最新更新