2012-01-25 17 views
6

He encontrado una extraña sintaxis en Scala, podría alguien explicarme qué significa "ampersand" cuando se aplica entre funciones que se pasan como argumento a otra función?¿Qué significa ampersand entre funciones en Scala

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

Gracias por explicarme este.

+1

¿Está relacionado con el ascensor? Si es así, por favor aclare esto en su pregunta y tal vez el título. Esto no parece estar en la biblioteca estándar scala. – ziggystar

Respuesta

1

En este caso, parece que está concatenando la salida de las llamadas SetHtml.

¿Se ve más claro así?

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

¿Funciona como operador de concatenación en cadenas en Scala? – Jarek

+2

No. & es un método de lo que devuelve SetHtml. Si se trata de un String, se trata de un método agregado de forma implícita. Este es el problema con las implícitas y la sobrecarga del sobrealimentador. – Chochos

+1

@Chocos: los gustos varían por supuesto, pero en mi opinión, Lift hace un buen trabajo al proporcionar una sintaxis limpia sin la maquinaria detrás de escena masivamente oscura de algo como Specs2, por ejemplo. Es posible que deba pasar un poco más de tiempo por adelantado con la documentación, pero podría decirse que vale la pena. –