我是一個新手,斯卡拉,這是我第一次運行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中。