8

重大なパフォーマンスの問題は別として、Scala は非常に強力な言語です。したがって、私は現在、Bash 内のスクリプト化されたタスクに頻繁に使用しています。*.scala ファイルを Python ファイルとまったく同じように実行する方法はありますか? 私が知る限り、Python は JVM とまったく同じようにバイトコードを使用してプログラムを実行します。ただし、これを達成するために呼び出す必要がある pythonc (scalac や javac など) と呼ばれるものはありません。したがって、Scala も同様の方法で動作できると期待しています。

4

2 に答える 2

2

私は Python を使用しませんが、Scala でできる最もスクリプト的なことは次のとおりです。

thinkpux:~/proj/mini/forum > echo 'println(" 3 + 4 = " + (3 + 4))' | scala 
Welcome to Scala version 2.10.2 (Java HotSpot(TM) Server VM, Java 1.7.0_09).
Type in expressions to have them evaluated.
Type :help for more information.

scala> println(" 3 + 4 = " + (3 + 4))
 3 + 4 = 7

scala> thinkpux:~/proj/mini/forum > 

ただし、その後、bash に視覚的なフィードバックがないため、「クリア」を呼び出す必要があります。

しかし、スクリプトを書いてそれを実行することに問題はありません:

thinkpux:~/proj/mini/forum > echo 'println(" 3 + 4 = " + (3 + 4))' > print7.scala 
thinkpux:~/proj/mini/forum > scala print7.scala 
 3 + 4 = 7

その後、シェルに問題はありません。

囲んでいるクラスでは、コードは実行されません。

thinkpux:~/proj/mini/forum > echo -e 'class Foo {\nprintln(" 3 + 4 = " + (3 + 4))\n}\n'
class Foo {
println(" 3 + 4 = " + (3 + 4))
}

thinkpux:~/proj/mini/forum > scala Foo.scala 
thinkpux:~/proj/mini/forum > cat Foo.scala 
class Foo {
println(" 3 + 4 = " + (3 + 4))
}

しかし、クラスをインスタンス化すると、よく知られている(そうであることを願っています)「メイン」の方法を使用せずに、そのクラスでコードを実行できます。

thinkpux:~/proj/mini/forum > echo -e 'class Foo {\nprintln(" 3 + 4 = " + (3 + 4))\n}\nval foo = new Foo()'  > Foo.scala
thinkpux:~/proj/mini/forum > cat Foo.scala 
class Foo {
println(" 3 + 4 = " + (3 + 4))
}
val foo = new Foo()
thinkpux:~/proj/mini/forum > scala Foo.scala 
 3 + 4 = 7
于 2013-07-19T23:14:37.570 に答える