2017-10-08 4 views
1

Est-il possible d'utiliser des pointeurs de méthode dans Crystal?Crystal - pointeurs de méthode

Et si oui, comment puis-je les créer et les utiliser?

Je souhaite stocker plusieurs instructions dans un tableau, puis appeler celui qui est requis plus tard dans le programme.

Répondre

4

C'est pour quoi Proc est pour.

def foo() 
    puts "foo" 
end 

def bar() 
    puts "bar" 
end 

procs = {->foo, ->bar} 

procs.each do |p| 
    p.call 
end 

sorties

foo 
bar 

Voir en ligne: https://play.crystal-lang.org/#/r/2vb7

Il travaille également avec des méthodes et des méthodes statiques:

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 


En savoir plus dans les documents officiels: https://crystal-lang.org/docs/syntax_and_semantics/literals/proc.html