2017-10-08 44 views
1

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

如果是的話,我該如何創建和使用它們?

我希望在數組中存儲多條指令,然後在程序中稍後調用所需的指令。

回答

4

這是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