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.
Comentários
Comentários fechados.
Sem nenhum comentário.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300