我是一个新手,斯卡拉,这是我第一次运行Scala中,当我安装了Scala中,我创建了一个名为Hello.scala
文件,内容是:为什么我不能执行scala文件?
println("HelloWorld!")
当我输入scala
,没有问题,斯卡拉REPL结果显示,但是当我输入scala Hello.scala
,它提示:
<console>:1: error: ';' expected but '.' is found.
我不知道是什么问题,我希望有人能帮助我。
我是一个新手,斯卡拉,这是我第一次运行Scala中,当我安装了Scala中,我创建了一个名为Hello.scala
文件,内容是:为什么我不能执行scala文件?
println("HelloWorld!")
当我输入scala
,没有问题,斯卡拉REPL结果显示,但是当我输入scala Hello.scala
,它提示:
<console>:1: error: ';' expected but '.' is found.
我不知道是什么问题,我希望有人能帮助我。
您的文件Hello.scala
是一个脚本。您应该能够使用scala Hello.scala
从命令提示符运行它。
$ scala Hello.scala
HelloWorld!
另一方面,REPL不适用于运行脚本。它用于直接运行阶代码:
scala> println("HelloWorld!")
"HelloWorld!"
为了在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>
只是我所知道的一个总结。我曾经被如何正确运行一个scala文件弄糊涂了。
总之,我们得到了3种方式来实现这一目标:
脚本文件。对于脚本,这意味着它与在REPL中键入语句行相同,或者使用:paste
模式粘贴多行。类似:
的println( “foo” 的)
编译包含main方法scalac
的对象。您可以通过extends
App特性轻松实现。
高清主(参数:数组[字符串]):单位
你可能会说: “你这个骗子,只有两个办法”。但对于第二个,我认为有太多的方法让它运行。
scala -howtorun:object ObjectName -cp "./"
:-cp
只是为了保险。java -cp "/path/to/your/scala-jars" ObjectName
:所以差异只是需要包含的类路径。如果你是在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
::!#
添加-nc
旗救了我的一天。
scala -nc Hello.scala
什么是-nc
?
-nc no compilation daemon: do not use the fsc offline compiler
什么是fsc offline compiler
?
fsc – Fast offline compiler for the Scala 2 language
来源:http://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/tools/fsc.html
这适用于MAC的发展。
#!/usr/bin/env scala -nc
println("hello");
如果您在斯卡拉REPL。你执行它应该使用如下
:load [scala file path]
输出将是如下
定义的 “对象名”
然后调用主要方法作为下一个命令
objectname.main(Array())
请参阅以下网址获取更详细的信息
https://www.scala-lang.org/documentation/getting-started.html
写println语句,主要功能
object HelloWorld {
def main(args: Array[String]) {
println("Hello World!")
}
}
里面然后执行:斯卡拉的HelloWorld。斯卡拉
当你试图运行阶按照以下步骤进行:
scala <filename.scala><Input if any>
从命令提示符是例如:
scala /home/prakash/Desktop/babyname.scala < /home/prakash/Desktop/ND
注意:上面的命令必须在unix cmd提示符下键入,而不是在scala repl中。