2017-10-08 4 views
1

Ist es möglich, Methodenzeiger in Crystal zu verwenden?Crystal - Methodenzeiger

Und wenn ja, wie erstelle und benutze ich sie?

Ich möchte mehrere Anweisungen in einem Array speichern und dann die erforderliche später im Programm aufrufen.

Antwort

4

Dies ist, was Proc ist für.

def foo() 
    puts "foo" 
end 

def bar() 
    puts "bar" 
end 

procs = {->foo, ->bar} 

procs.each do |p| 
    p.call 
end 

Ausgänge

foo 
bar 

Siehe online: https://play.crystal-lang.org/#/r/2vb7

Es ist auch mit Methoden und statischen Methoden funktioniert:

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 


mehr in den offiziellen Dokumenten lesen: https://crystal-lang.org/docs/syntax_and_semantics/literals/proc.html