2012-05-29 5 views

Respuesta

15

Esta característica existe por el bien de la interoperabilidad. Si Scala tiene una palabra reservada (with, por ejemplo), puede seguir consultando el código de otros idiomas que lo utilizan como método o variable o lo que sea, mediante el uso de palos.

Como no había ninguna razón para prohibir cadenas casi arbitrarias, puede usar cadenas casi arbitrarias.

+2

+1 por dar una * razón * sobre por qué los backticks están ahí. – Frank

+0

Tengo la sensación de que el caso de uso de PO también se ha tenido en cuenta, de lo contrario solo sería necesario un solo símbolo para denotar un identificador entre comillas muy parecido a como lo hace C# –

+0

@jk. - Solo si el lexing de Scala funciona de la misma manera que el de los demás. La especificación de JVM permite casi cualquier cosa como nombre de método. No estoy seguro de si Scala es lo suficientemente inteligente como para verificar tanto su codificación de símbolos compatible con Java (por ejemplo, espacio se convierte en $ u0020) como la versión en bruto, pero podría hacerlo si alguien escribiera un lenguaje que coloque caracteres no estándar en los nombres de los métodos. –

2

Las cadenas incluidas en ` son identificadores válidos en Scala, no solo para nombres de clases y métodos, sino también para funciones y variables.

1

Para mí, es solo que el analizador y el compilador se construyeron de una manera que permite eso, por lo que el equipo de Scala lo implementó.

Creo que puede ser genial para un codificador poder dar nombres reales a funciones en lugar de getThisIncredibleItem o get_this_other_item.

Gracias por sus preguntas que me enseñaron algo nuevo en Scala!

5

La Scala especificación del lenguaje:

Hay tres maneras de formar un identificador. Primero, un identificador puede comenzar con una letra que puede ser seguida por una secuencia arbitraria de letras y dígitos. A esto pueden seguir caracteres de subrayado '_' y otra cadena compuesta de letras y dígitos o de caracteres de operador . En segundo lugar, un identificador puede comenzar con un operador de caracteres seguido de una secuencia arbitraria de caracteres de operador. Las dos formas anteriores se llaman identificadores simples. Finalmente, un identificador también puede estar formado por una cadena arbitraria entre comillas (los sistemas host pueden imponer algunas restricciones en las cuales las cadenas son legales para los identificadores). El identificador se compone de , todos los caracteres excluyendo las comillas traseras.

7

Como se respondió @Rex Kerr, esta función es para la interoperabilidad.Por ejemplo,

Para llamar a un método Java,

Thread.yield() 

tiene que escribir

Thread.`yield`() 

desde yield es una palabra clave en la Scala.

Cuestiones relacionadas