Perché Scala usa l'operatore '_' per l'importazione del pacchetto invece di '*' come in Java?

17

A mio parere, una delle cose più grandi su Scala è la sua interoperabilità con Java e la sua sintassi simile. Una cosa che ho trovato strano è l'uso dell'operatore _ per le importazioni di pacchetti wilcard invece dell'operatore * utilizzato in Java.

C'è un motivo tecnico per utilizzare _ anziché * ? Se no, allora perché questo cambiamento è stato fatto?

    
posta vainolo 11.04.2013 - 21:06
fonte

4 risposte

35

In Scala, * è un identificatore valido. Si potrebbe scrivere:

val * = "trollin'"
println(*)

Con il risultato che è:

trollin'

Si potrebbe scrivere una classe chiamata * come tale:

class * {
  def test():String = {
    "trollin'"
  }
}

Quindi, in questo caso, quando ho una classe * nel pacchetto us.hexcoder e scrivo:

import us.hexcoder.*

Direi che desideri importare una classe con il nome * . Per questo motivo, Scala aveva bisogno di usare un altro simbolo per indicare un'importazione con caratteri jolly. Per qualsiasi motivo, hanno deciso di utilizzare _ come simbolo jolly.

    
risposta data 11.04.2013 - 21:30
fonte
13

Nei linguaggi funzionali, il carattere _ è comunemente usato per dire "Non mi interessa questo parametro" o "tutto può andare qui". L'estensione di tale valore alle importazioni di namespace ha senso solo.

    
risposta data 11.04.2013 - 21:17
fonte
2

Oltre alla risposta di Glenn, import è un'istruzione valida ovunque in Scala e puoi import un oggetto o membri di un'istanza in ambito. Poiché * è ovviamente membro di molte classi, non può essere utilizzato come carattere jolly per l'istruzione import . Quindi finisci con una stringa che non deve essere un identificatore valido.

_ viene in mente. Il fatto che sia utilizzato in altri posti per un significato diverso (tipo esistenziale, funzione come istanza) è anche dovuto allo stesso problema.

    
risposta data 12.04.2013 - 03:25
fonte
0

In Scala ci sono dozzine di posti dove viene usato il carattere di sottolineatura. Usarlo per le importazioni con caratteri jolly è solo una conseguenza logica.

    
risposta data 11.04.2013 - 21:25
fonte

Leggi altre domande sui tag