2012-09-13 9 views
12

soy un novato en Scala, que es la primera vez que estoy corriendo Scala, cuando he instalado Scala, he creado un archivo llamado Hello.scala, el contenido es:¿Por qué no puedo ejecutar el archivo scala?

println("HelloWorld!") 

cuando he escrito scala, no había problema, se le mostró el REPL Scala, pero cuando he escrito scala Hello.scala que, incitó:

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

No sé lo que es un problema, espero que alguien me puede ayudar.

Respuesta

8

Su archivo Hello.scala es un script. Debería poder ejecutarlo desde el símbolo del sistema con scala Hello.scala.

$ scala Hello.scala 
HelloWorld! 

El REPL, por otro lado, no es para ejecutar scripts. Se utiliza para ejecutar código Scala directamente:

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

Para ejecutar script externo (cargar todas las definiciones de la misma) en REPL utilizar :load <filepath> comandos en lugar de 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 resumen de lo que sé. Solía ​​confundirme cómo ejecutar un archivo scala correctamente.

En suma, nos dieron 3 maneras de lograr esto:

  1. para los archivos de secuencia de comandos. Para el script, significa que es exactamente igual a como escribe líneas de instrucciones en el REPL, o usa el modo :paste para pegar varias líneas. Algo así como:

    println ("foo")

  2. Compilar un objeto que contiene método principal con scalac. Puede extends Característica de la aplicación para implementar fácilmente.

    def principales argumentos: Array ([String]): Unidad

Usted puede decir "Usted mentiroso, sólo hay dos maneras". Pero para el segundo, creo que hay demasiadas formas de hacerlo funcionar.

  1. scala -howtorun:object ObjectName -cp "./": El -cp es solo para seguro.
  2. java -cp "/path/to/your/scala-jars" ObjectName: Entonces la diferencia es solo la classpath que se debe incluir.
1

Si estás en un cierto sabor de UNIX, puede ejecutar un script Scala como script de shell anteponiendo un libra explosión Directiva en la parte superior del archivo.

Por ejemplo, escriba lo siguiente en un archivo denominado helloarg:

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

El #!/bin/sh inicial debe ser la primera línea del archivo.
Una vez que configure su permiso de ejecución:

$ chmod +x helloarg 

Puede ejecutar la secuencia de comandos Scala como script de shell con sólo decir:

$ ./helloarg globe 

Si estás en Windows, se puede lograr el mismo efecto nombrando el archivo helloarg.bat y la colocación de esta en la parte superior de su script:

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

Esto funciona en Mac para el desarrollo.

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

Si se está ejecutando en .tiene Scala REPL debería usar la siguiente

:load [scala file path] 

de salida sería de la siguiente manera

definido "objectname"

A continuación, invoque el método principal como el siguiente comando

objectname.main(Array()) 

Consulte la siguiente página para encontrar información más detallada

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

0

declaración println de escritura dentro de la función principal

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

luego ejecutar: HelloWorld Scala.Scala

0

Cuando se trata de abrir Scala sigue los pasos siguientes:

  1. Dont Scala abierta REPL
  2. uso scala <filename.scala><Input if any> de cmd pronta

a continuación es el ejemplo:

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

Nota: El comando anterior debe escribirse en el indicador cmd de unix no en scala repl.

Cuestiones relacionadas