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

时间:2016-06-30 04:57:45

标签: python ruby-on-rails ruby methods 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 中,当您调用方法或函数时,可以使用或执行此操作   没有括号。

     

如果我在Ruby中这样做:

require_relative "MyClass"

MyClass.new.my_method_click(function) # without parentheses

只需在不发送的情况下调用它。

当然,对于一个Button,当我点击它时,运行此操作。

我如何在Ruby中完成?

谢谢!

1 个答案:

答案 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创建一个新方法。但是,您最终会处理绑定并绑定到正确的实例类型等。因此,使用LambdaProc s会更容易。

相关问题