Como você pode ver pelas respostas, é possível definir um método de maneiras diferentes em uma única linha, mas a questão é, você deveria? Qualquer definição deve ser escrita de uma forma que seja clara e limpa por motivos de manutenção e legibilidade, portanto, se a linha única se tornar difícil de manejar ou confusa, espalhe-a. Algumas linguagens parecem encorajar a codificação concisa como uma forma de estudar o código, mas o estilo de codificação Ruby incentiva a elegância, a legibilidade e a manutenção acima do estudo. Cumpra os três primeiros e nós nos curvaremos a você.
o Homem de Lata de
Respostas:
102
Você pode evitar a necessidade de usar ponto-e-vírgulas se usar parênteses:
Isso é mais longo do que usar ponto-e-vírgulas ...?
Apollys apoia Monica de
73
Basta dar uma nova resposta completa:
Em geral, evite métodos de linha única. Embora sejam um tanto populares na natureza, existem algumas peculiaridades sobre sua sintaxe de definição que tornam seu uso indesejável. De qualquer forma - não deve haver
mais de uma expressão em um método de linha única .
# baddef too_much; something; something_else;end# okish - notice that the first ; is requireddef no_braces_method; body end# okish - notice that the second ; is optionaldef no_braces_method; body;end# okish - valid syntax, but no ; make it kind of hard to readdef some_method() body end# gooddef some_method
body
end
Uma exceção à regra são os métodos de corpo vazio.
Em Ruby, o valor de retorno de um método é o valor retornado pela última instrução. Você não precisa do returnaqui, pois não é uma cláusula de guarda.
Damien
1
Aprovado porque, embora não seja necessário , returnpode adicionar legibilidade para aqueles menos versados em (ou familiarizados com) Ruby. É uma daquelas coisas YMMV ...
Respostas:
Você pode evitar a necessidade de usar ponto-e-vírgulas se usar parênteses:
fonte
Basta dar uma nova resposta completa:
Em geral, evite métodos de linha única. Embora sejam um tanto populares na natureza, existem algumas peculiaridades sobre sua sintaxe de definição que tornam seu uso indesejável. De qualquer forma - não deve haver mais de uma expressão em um método de linha única .
Uma exceção à regra são os métodos de corpo vazio.
Do guia do estilo bbatsov / rubi .
fonte
O ponto-e-vírgula é o terminador da instrução embutida para Ruby
Ou você pode usar o
define_method
método. (Editar: este está obsoleto no Ruby 1.9)fonte
Outra maneira:
Pode ser usado se você não quiser inserir um novo escopo para o método ao defini-lo.
fonte
define_method
foi "privatizado" em Ruby 1.9Ainda outra maneira:
fonte
return
aqui, pois não é uma cláusula de guarda.return
pode adicionar legibilidade para aqueles menos versados em (ou familiarizados com) Ruby. É uma daquelas coisas YMMV ...