2012-09-13 27 views
12

我是一个新手,斯卡拉,这是我第一次运行Scala中,当我安装了Scala中,我创建了一个名为Hello.scala文件,内容是:为什么我不能执行scala文件?

println("HelloWorld!") 

当我输入scala,没有问题,斯卡拉REPL结果显示,但是当我输入scala Hello.scala,它提示:

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

我不知道是什么问题,我希望有人能帮助我。

回答

8

您的文件Hello.scala是一个脚本。您应该能够使用scala Hello.scala从命令提示符运行它。

$ scala Hello.scala 
HelloWorld! 

另一方面,REPL不适用于运行脚本。它用于直接运行阶代码:

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

为了在REPL执行外部脚本(从它加载所有定义)使用:load <filepath>命令代替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

只是我所知道的一个总结。我曾经被如何正确运行一个scala文件弄糊涂了。

总之,我们得到了3种方式来实现这一目标:

  1. 脚本文件。对于脚本,这意味着它与在REPL中键入语句行相同,或者使用:paste模式粘贴多行。类似:

    的println( “foo” 的)

  2. 编译包含main方法scalac的对象。您可以通过extends App特性轻松实现。

    高清主(参数:数组[字符串]):单位

你可能会说: “你这个骗子,只有两个办法”。但对于第二个,我认为有太多的方法让它运行。

  1. scala -howtorun:object ObjectName -cp "./"-cp只是为了保险。
  2. java -cp "/path/to/your/scala-jars" ObjectName:所以差异只是需要包含的类路径。
1

如果你是在Unix上的一些味道,你可以通过在文件的顶部前面加上一个磅砰指令运行的Scala脚本作为shell脚本 。

例如,键入以下到名为helloarg文件:

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

初始#!/bin/sh必须是在该文件中的第一行。
一旦您设置了执行权限:

$ chmod +x helloarg 

您可以通过简单地说运行斯卡拉脚本作为shell脚本:

$ ./helloarg globe 

如果您使用的是Windows,就可以达到同样的效果通过命名 文件helloarg.bat,并在你的脚本的顶部放置此:

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

这适用于MAC的发展。

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

如果您在斯卡拉REPL。你执行它应该使用如下

:load [scala file path] 

输出将是如下

定义的 “对象名”

然后调用主要方法作为下一个命令

objectname.main(Array()) 

请参阅以下网址获取更详细的信息

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

0

写println语句,主要功能

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

里面然后执行:斯卡拉的HelloWorld。斯卡拉

0

当你试图运行阶按照以下步骤进行:

  1. 不要开斯卡拉REPL
  2. 使用scala <filename.scala><Input if any>从命令提示符
下面

是例如:

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

注意:上面的命令必须在unix cmd提示符下键入,而不是在scala repl中。

相关问题