Named parameters
Publicado em Developer
Estava fuçando aqui com Lisp e cheguei na parte de named parameters. Algo mais ou menos assim:
[taq@~]clisp [1]> (defun foo (&key a b c) (list a b c)) FOO [2]> (foo) (NIL NIL NIL) [3]> (foo :a 1) (1 NIL NIL) [4]> (foo :a 1 :b 2) (1 2 NIL) [5]> (foo :a 1 :b 2 :c 3) (1 2 3) [6]> (foo :b 2 :c 3 :a 1) (1 2 3) [7]> (foo :c 3 :a 1 :b 2) (1 2 3)
Aí fiquei pensando em como fazer isso em Ruby e acabei achando essa discussão sobre o assunto, onde o próprio Matz posta algum código de um rascunho do que podem ser os named parameters no Ruby 2.
Mas enquanto isso não sai oficialmente, dá para usar como:
[taq@~]irb irb(main):001:0> def foo(p={}) irb(main):002:1> puts "a:#{p[:a]} b:#{p[:b]} c:#{p[:c]}" irb(main):003:1> end => nil irb(main):004:0> foo a: b: c: => nil irb(main):005:0> foo :a => 1 a:1 b: c: => nil irb(main):006:0> foo :a => 1, :b => 2 a:1 b:2 c: => nil irb(main):007:0> foo :a => 1, :b => 2, :c => 3 a:1 b:2 c:3 => nil irb(main):008:0> foo :b => 2, :c => 3, :a => 1 a:1 b:2 c:3 => nil irb(main):009:0> foo :c => 3, :a => 1, :b => 2 a:1 b:2 c:3 => nil irb(main):026:0>
Que é uma forma comum de enviar parâmetros no Rails.
Tags:
Comentários
Comentários fechados.
Sem nenhum comentário.