2012-01-25 12 views
6

W Scali spotkałem się z dziwną składnią, czy ktoś mógłby mi wytłumaczyć, co oznacza znak ampersand, kiedy aplikuje się między funkcjami, które są przekazywane jako argument do innej funkcji?Co oznacza nazwa ampersand pomiędzy funkcjami w Scali

partialUpdate { 
    SetHtml(currentAmountId, 
    Text(leadingBid.toString)) & 
    SetHtml(nextAmountId, 
    Text(minimumBid.toString)) & 
    SetHtml(winningCustomerId, winningCustomer) & 
    SetValueAndFocus(amountId,"") 
} 

Dziękuję za wyjaśnienie mi tego.

+1

Czy jest to związane z Lift? Jeśli tak, proszę to wyjaśnić w swoim pytaniu i być może tytuł. Wydaje się, że nie jest to w standardowej bibliotece scala. – ziggystar

Odpowiedz

1

W tym przypadku wygląda na to, że łączy dane wyjściowe wywołań SetHtml.

Czy to wygląda tak wyraźniej?

partialUpdate { 
    SetHtml(currentAmountId, Text(leadingBid.toString)) & 
    SetHtml(nextAmountId, Text(minimumBid.toString)) & 
    SetHtml(winningCustomerId, winningCustomer) & 
    SetValueAndFocus(amountId,"") 
} 
+0

Więc działa jako operator konkatenacji na ciągi znaków w Scala? – Jarek

+2

No. & jest metodą zwracaną przez SetHtml. Jeśli jest to ciąg, to jest to metoda dodana przez niejawne. To jest problem z implikacjami i przeciążaniem overatora. – Chochos

+1

@Cocoos: gusta różnią się oczywiście, ale moim zdaniem Lift wykonuje całkiem dobrą robotę, dostarczając czystą składnię bez masowo mało znanych zakulisowych maszyn takich jak na przykład Specs2. Być może będziesz musiał spędzić trochę więcej czasu z dokumentacją, ale jest to opłacalne. –