Czy ktoś może mi pomóc skrócić następującą metodę? Zacząłem od tego, co mi się bardzo podobało:Warunkowe uwzględnienie pary klucz-wartość w haszcie
def self.some_hash
{ "foo" => "bar" }
end
Teraz chcę dodać opcjonalny klucz. Tersest składnia mogę myśleć to:
def self.some_hash(some_key=nil)
answer = { "foo" => "bar" }
answer[some_key] = "yucky, long-winded syntax" if some_key
answer
end
Zmodyfikowana metoda działa, ale jestem niezadowolony z odpadami wirtualnego atramentu. Czy istnieje sposób, aby to skrócić? Zdaję sobie sprawę, że można użyć operatora trójskładnikowego na literałowym haśle, ale to wymusiłoby (jak sądzę) powtórzenie pary na każdym odgałęzieniu warunku, który również jest nieco mniejszy niż pierwotny.
"pomóżcie mi skrócić następującą metodę" to rozdawanie że powinno to być na codereview.stackexchange.com, gdzie robią opinie i pomagają w refaktoryzacji i optymalizacji. –
Smutno, że to pytanie zostało zamknięte, kiedy naprawdę pyta: "W jaki sposób warunkowo dołączyć parę klucz/wartość w haszyszu?". Napisałem odpowiedź w innym miejscu, korzystając z [podwójnego operatora] Ruby 2.0 (http://stackoverflow.com/a/37474217/122087). –
@PaulAJungwirth, domyślam się, że został zamknięty, ponieważ chciałem tylko poprawić działający kod. Mogłem zamiast tego wymyślić trochę składni śmieci, a następnie stwierdziłem, że to nie działa, a wszystko będzie dobrze w SO. To WIELKA wskazówka na temat operatora **! Dzięki <--- zniechęcanie 'dzięki w komentarzu jest kolejną głupią, normą tutaj, ale -> DZIĘKI! – danh