2012-09-13 13 views
12

Sono un novizio alla Scala, è la prima volta che corro Scala, quando ho installato Scala, ho creato un file denominato Hello.scala, il contenuto è:Perché non riesco ad eseguire il file scala?

println("HelloWorld!") 

quando ho digitato scala, non c'era problema, il REPL Scala è stato mostrato, ma quando ho digitato scala Hello.scala, è richiesto:

<console>:1: error: ';' expected but '.' is found. 

io non so quale sia il problema è, spero che qualcuno mi può aiutare.

risposta

8

Il file Hello.scala è uno script. Dovresti essere in grado di eseguirlo dal prompt dei comandi con scala Hello.scala.

$ scala Hello.scala 
HelloWorld! 

Il REPL, d'altra parte, non è per l'esecuzione di script. Viene utilizzato per l'esecuzione di codice Scala direttamente:

scala> println("HelloWorld!") 
"HelloWorld!" 
12

Per eseguire script esterno (caricare tutti definizioni da esso) in REPL utilizzare :load <filepath> comando anziché scala <filepath>.

» echo 'println("HelloWorld")' > Hello.scala 
» scala 
Welcome to Scala version 2.9.2 (OpenJDK Client VM, Java 1.6.0_24). 
Type in expressions to have them evaluated. 
Type :help for more information. 

// is this what you tried to do? 
scala> scala Hello.scala 
<console>:1: error: ';' expected but '.' found. 
    scala Hello.scala 

// do this instead 
scala> :load Hello.scala 
Loading Hello.scala... 
HelloWorld 

scala> 
1

Solo un riassunto di ciò che so. Ero solito confondermi su come eseguire correttamente un file scala.

In sintesi, abbiamo ottenuto 3 modi per raggiungere questo obiettivo:

  1. Per i file di script. Per lo script, significa che è uguale a quando si digitano le righe di istruzioni nel REPL o si utilizza la modalità :paste per incollare più righe. Qualcosa di simile:

    println ("foo")

  2. Compilare un oggetto che contiene il metodo principale con scalac. È possibile utilizzare la caratteristica dell'app extends per implementarla facilmente.

    def principali (args: Array [String]): Unità

Si può dire "Bugiardo, ci sono solo due modi". Ma per il secondo, penso che ci siano troppi modi per farlo funzionare.

  1. scala -howtorun:object ObjectName -cp "./": Il -cp è solo per l'assicurazione.
  2. java -cp "/path/to/your/scala-jars" ObjectName: Quindi la differenza è solo il percorso di classe deve essere incluso.
1

Se siete su un certo sapore di UNIX, è possibile eseguire uno script Scala come uno script di shell anteponendo un libbra botto direttiva nella parte superiore del file.

Ad esempio, digitare quanto segue in un file denominato helloarg:

#!/bin/sh 
exec scala "$0" "[email protected]" 
!# 
// Say hello to the first argument 
println("Hello, "+ args(0) +"!") 

L'iniziale #!/bin/sh deve essere la prima riga del file.
Una volta impostato il suo permesso di esecuzione:

$ chmod +x helloarg 

È possibile eseguire lo script Scala come uno script di shell, semplicemente dicendo:

$ ./helloarg globe 

Se siete su Windows, è possibile ottenere lo stesso effetto nominando il file helloarg.bat e ponendo questo nella parte superiore dello script:

::#! 
@echo off 
call scala % 0 % * 
goto :eof 
::!# 
0

Questo funziona in Mac per lo sviluppo.

#!/usr/bin/env scala -nc 
println("hello"); 
1

Se si sta eseguendo in scala REPL .È dovrebbe utilizzare, come di seguito

:load [scala file path] 

uscita sarebbe come di seguito

definito "nomeoggetto"

Quindi invoca il metodo principale come prossimo comando

objectname.main(Array()) 

consultare l'url sotto per informazioni più dettagliate

https://www.scala-lang.org/documentation/getting-started.html

0

dichiarazione Write println all'interno della funzione principale

object HelloWorld { 
def main(args: Array[String]) { 
    println("Hello World!") 
} 
} 

poi eseguire: HelloWorld Scala.Scala

0

Quando si sta tentando di eseguire Scala seguire la procedura:

  1. Dont aperta Scala REPL
  2. uso scala <filename.scala><Input if any> da cmd prompt dei

sotto è l'esempio:

scala /home/prakash/Desktop/babyname.scala < /home/prakash/Desktop/ND

Nota: il comando sopra il deve essere digitato in un prompt cmd unix non in scala repl.

Problemi correlati