2011-09-14 14 views
11

¿Por qué funciona lo siguiente en R?¿Por qué `: =` funciona como un operador infijo?

> `:=` <- function(x, y) x + y 
> 1 := 2 
[1] 3 

Mi entendimiento es que % se requería para los operadores infijos definidos por el usuario. ¿Hay otras opciones (posiblemente más fáciles de escribir) disponibles?

Respuesta

11

Esto se debe a := es, como <- o <<-, definida como LEFT_ASSIGN para el analizador de R.
Ver http://svn.r-project.org/R/trunk/src/main/gram.y

Esto significa que := es un caso especial y que así no se puede esperar que cualquier otra las opciones están disponibles.

+0

Es bastante extraño que pueda enmascarar a los operadores existentes no% infix con definiciones ridículas. –

+0

Lo que es más extraño para mí es que ': =' está definido solo para el analizador sintáctico, pero la definición de ': =' está ausente. – kohske

+0

Gracias @kohske. Al mirar ese código, parece que ': =' es el único token de "repuesto" reconocido por el analizador. – pete

Cuestiones relacionadas