水晶 - 方法指针

问题描述:

是否可以在Crystal中使用方法指针?水晶 - 方法指针

如果是的话,我该如何创建和使用它们?

我希望在数组中存储多条指令,然后在程序中稍后调用所需的指令。

这是Proc的用途。

def foo() 
    puts "foo" 
end 

def bar() 
    puts "bar" 
end 

procs = {->foo, ->bar} 

procs.each do |p| 
    p.call 
end 

输出

foo 
bar 

见在线:https://play.crystal-lang.org/#/r/2vb7

它还适用于方法和静态方法:

class A 
    def self.foo() 
    puts "A.foo" 
    end 

    def bar() 
    puts "bar" 
    end 
end 

proc = ->A.foo 

puts proc 
proc.call 

a = A.new 

proc = ->a.bar 
proc.call 


在官方文档阅读:https://crystal-lang.org/docs/syntax_and_semantics/literals/proc.html