Więc dla bardzo małej wzoru interpretter ktoś poprosił mnie o code-golf, chciałem zrobić coś takiegoOperatorzy jak literały funkcyjnych
val ops = Map("plus" -> + , "minus"-> -, "times"-> *, "div" -> /)
aby umożliwić szybką konwersję pomiędzy słowami kluczowymi i opisują funkcje. Nie tylko ta składnia nie była analizowana, ale nie została wypróbowana żadna inna skrócona składnia, którą próbowałem (_ + _
, _:Int.+_
). Czy istnieje sposób, aby to zrobić jako skrót funkcyjny, czy też jestem skazany na pełne wypisywanie lambd, rujnując mój wynik w golfa.
Edycja: Problemem były tylko liczby całkowite. Rozumiem, że przeciążenie spowodowałoby to znacznie trudniejsze inaczej.
jedynym sposobem wiem, byłoby 'ops val = mapa [String (Int, Int) => Int] ("plus" -> (_ + _), "minus" -> (_ - _)); 'To nie oszczędza zbyt wiele postaci ... Jestem ciekawy, co zasugerują bardziej doświadczeni/mądrzejsi ludzie. :) –
@ PatrykĆwiek jeśli OP chce ogólnego podejścia do dowolnej wartości, lambda nie pomoże, ponieważ te operacje są przeciążone – 4lex1v
@AlexIv Prawda, to specjalizacja. Założę się przez adnotację '_: Int' w pytaniu, że proste' (Int, Int) => Int' będzie wystarczające. Jeśli to ogólne pytanie, to nie mam pomysłów. :) –