Python #Ruby Tk将方法/函数作为参数传递
我解释: 我想知道如何将方法或函数作为参数传递 例如,Python中的将是: 在本例中,在Python中,发送函数或方法时不使用 括号,如果我这样做: 我调用函数,但不发送它 在Ruby中,调用方法或函数时,可以使用或 没有括号 如果我在Ruby中这样做: 不发就直接打电话 当然,是一个按钮,当我点击它时,运行这个操作 我如何在Ruby中实现它??Python #Ruby Tk将方法/函数作为参数传递,python,ruby-on-rails,ruby,methods,tk,Python,Ruby On Rails,Ruby,Methods,Tk,我解释: 我想知道如何将方法或函数作为参数传递 例如,Python中的将是: 在本例中,在Python中,发送函数或方法时不使用 括号,如果我这样做: 我调用函数,但不发送它 在Ruby中,调用方法或函数时,可以使用或 没有括号 如果我在Ruby中这样做: 不发就直接打电话 当然,是一个按钮,当我点击它时,运行这个操作 我如何在Ruby中实现它?? 谢谢基本上,您希望传递一个可运行的代码块。我还没有研究Python,但我确信它也支持闭包 无论如何,在Ruby中,传递可运行代码的“通用”方法是使用
谢谢基本上,您希望传递一个可运行的代码块。我还没有研究Python,但我确信它也支持闭包 无论如何,在Ruby中,传递可运行代码的“通用”方法是使用块(lambda和procs)
您还可以获取类方法的实例,或者使用
method.new
创建一个新方法。但是,您最终将处理绑定和绑定到正确的实例类型等。因此,使用Lambda
s和Proc
s要容易得多。基本上,您希望传递一个可运行的代码块。我还没有研究Python,但我确信它也支持闭包
无论如何,在Ruby中,传递可运行代码的“通用”方法是使用块(lambda和procs)
您还可以获取类方法的实例,或者使用
method.new
创建一个新方法。但是,您最终需要处理绑定和绑定到正确的实例类型等。因此,使用Lambda
s和Proc
s要容易得多。您的问题还不清楚。你谈论方法和函数的时候好像它们是可以互换的,但是方法和函数是完全不同的。方法属于对象,但本身不是对象。函数是对象。Ruby没有“函数”的概念。根据您的确切意思,“函数”的作用可以由以下任何一种来发挥:一个Proc
、一个响应调用的对象、一个响应到\u Proc
的对象,或者一个响应调用和到\u Proc
的对象。您的问题不清楚。你谈论方法和函数的时候好像它们是可以互换的,但是方法和函数是完全不同的。方法属于对象,但本身不是对象。函数是对象。Ruby没有“函数”的概念。根据您的确切意思,“函数”的角色可以由以下任意一种来扮演:一个Proc
、一个响应调用的对象、一个响应到\u Proc
的对象,或者一个响应调用和到\u Proc
的对象。
from MyFile import MyClass
MyClass().my_method_click(function) # without parentheses
from MyFile import MyClass
MyClass().my_method_click(function()) # with parentheses
require_relative "MyClass"
MyClass.new.my_method_click(function) # without parentheses
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