2

私は、scala'-i'コマンドラインオプションがいくつかのscalaコードを実行し、それが定義したものを生成/検査できるようにインタラクティブシェルにダンプするのに非常に役立つことを発見しました。

しかし、私を完全に不思議に思うことが1つあります。それは、なぜスクリプトを2回ロードして実行するのでしょうか。

たとえば、カノニカルを含むファイルtest.scalaを指定します

println("Hello world")

ランニング

scala -i test.scala

生成:

$ scala -i test.scala
Loading test.scala...
Hello world

Loading test.scala...
Hello world

Welcome to Scala version 2.7.5final (Java HotSpot(TM) Client VM, Java 1.6.0_12).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

明らかに、それを2回実行することはそれほど頭痛の種ではありませんでしたが、実行に時間がかかるスクリプトには煩わしいです([Project Euler]((https://projecteuler.net)の問題を使用してscalaを学習しています)

どういうわけか-iオプションの意図や使用法を誤解していると思います...スクリプトファイルを一度だけ実行するにはどうすればよいですか?

(FWIW、私はSqueezeのscalaパッケージを使用してDebian / Lennyを使用しています。)

4

2 に答える 2

6

-i オプションに指定されたファイルの二重ロードは、Scala 2.7 のよく知られたバグです。これは、2.8 開発トランクで長い間修正されています。

RRS

于 2009-11-05T22:10:30.190 に答える
0

scalaのマニュアル ページには、 -i オプションは「ファイルを事前にロードするように要求します。対話型シェルに対してのみ意味があります」と書かれています。貝殻じゃない人は使わないようです。

于 2009-11-05T21:17:41.803 に答える