Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python #Ruby Tk将方法/函数作为参数传递_Python_Ruby On Rails_Ruby_Methods_Tk - Fatal编程技术网

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

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中的将是:

在本例中,在Python中,发送函数或方法时不使用 括号,如果我这样做:

我调用函数,但不发送它

在Ruby中,调用方法或函数时,可以使用或 没有括号

如果我在Ruby中这样做:

不发就直接打电话

当然,是一个按钮,当我点击它时,运行这个操作

我如何在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