2012-09-13 6 views
12

私はスカラ座への初心者ですが、それは私がスカラ座を実行している最初の時間だ、私はHello.scalaという名前のファイルを作成し、内容は次のとおりです。なぜスカラーファイルを実行できないのですか?私はスカラ座をインストールしたとき

println("HelloWorld!") 

私はscalaを入力すると、ノーがありました問題は、ScalaのREPLが示されたが、私はscala Hello.scalaを入力すると、それが促さ:

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

は、私が何であるかの問題を知らない、私は誰かが私を助けることができると思います。

答えて

8

ファイルHello.scalaはスクリプトです。コマンドプロンプトから実行するには、scala Hello.scalaと指定する必要があります。

$ scala Hello.scala 
HelloWorld! 

REPLは、スクリプトを実行するためのものではありません。直接Scalaのコードを実行するために使用されます。

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

代わりscala <filepath>:load <filepath>コマンドを使用しREPLで(それから、すべての定義をロード)外部スクリプトを実行します。

» 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ファイルを適切に実行するかによって混乱することがありました。

  1. スクリプトファイルの場合:

    は要するに、我々はこれを達成するための3つの方法を得ました。スクリプトの場合は、REPLに文の行を入力するのと同じことを意味します。または、:pasteモードを使用して複数行をペーストします。何かのように:

    のprintln( "FOO")

  2. scalacメインメソッドを含むオブジェクトをコンパイル。 extends簡単に実装できるApp特性があります。

    デフメイン(引数:配列[文字列]):単位

あなたは言うかもしれない "あなたはうそつき、ちょうど2つの方法があります"。しかし、第2のものについては、それを稼働させる方法があると思います。

  1. scala -howtorun:object ObjectName -cp "./"-cpは保険の対象です。
  2. java -cp "/path/to/your/scala-jars" ObjectName:違いは、クラスパスを含める必要があることだけです。あなたがUnixのいくつかの味にしている場合は
1

は、ファイルの先頭にポンドバンディレクティブを付加することでシェルスクリプト としてScalaのスクリプトを実行することができます。例えば

helloargという名前のファイルに次のように入力します。初期#!/bin/shはファイル内の最初の行でなければなりません

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


あなたはその実行権限を設定したら:

$ chmod +x helloarg 

あなたは単純に言って、シェルスクリプトとしてScalaのスクリプトを実行することができます

$ ./helloarg globe 

をWindows上でなら、あなたは同じ効果を得ることができますが

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

これは、開発のためのMacで動作します。

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

あなたはScalaのREPL。あなたにそれを実行している場合は、

定義された "のObjectName"

、以下のようになります

:load [scala file path] 

出力以下のように使用する必要があります次のコマンドとしてmainメソッドを呼び出します

ScalaのHelloWorldのを:
objectname.main(Array()) 

より詳細な情報については以下のURL

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

0

を参照してくださいには、実行し

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

メイン関数内のprintln文を書きます。Scalaの

あなたは下記の手順のScalaを実行しようとしている
0

scala /home/prakash/Desktop/babyname.scala < /home/prakash/Desktop/ND:以下

CMDプロンプトから

  1. いけないオープンScalaのREPL
  2. 使用scala <filename.scala><Input if any>は一例です

    注:上記のコマンドは、scala replではないunix cmdプロンプトで入力する必要があります。

関連する問題