1

私がscala2.10REPL(インタラクティブなScalaシェル)で書いた場合:

 """\w""".

そしてそれを押すTABと私に与えられます:

+                     asInstanceOf          charAt                   
codePointAt           codePointBefore        
codePointCount        compareTo             compareToIgnoreCase       
concat                contains              ....

ただし、.r欠落しています。同じひもを日食に入れると、それも私に提供してくれ.rます。前に挿入した場合も同様ですimport scala.util.matching._。なぜREPLはすべての可能性を提供していないのですか?

私がユニコードで作業しようとすると、REPLにはさらに大きな問題があります。たとえば、次のように記述します。

"""\p{L}""".

それを押すTAB とエラーが発生します:

scala> """\p{L}""".<console>:1: error: unclosed multi-line string literal
"""
^

繰り返しますが、Eclipseでは正常に動作します。

REPLはとてもバグがありますか、それとも何かが足りませんか?

4

2 に答える 2

2

はい、r欠落していますが、書い"""\w""".rてEnterキーを押すと、それでも機能しres0: scala.util.matching.Regex = \wます. のタブのオートコンプリートはr、実際には必要ではないようです。Unicode の問題は、おそらく Java が原因です。-Dfile.encoding=UTF-8Javaに渡す場合は、UTF-8 を明示的に要求できます。これは、その方法を説明する投稿です。

Eclipse を使用している場合は、非常に優れた repl の代替品であるScala ワークシート プラグインをお勧めします。

于 2013-03-07T09:26:37.407 に答える
1

REPL はオブジェクトのフィールドとメソッドのみを表示しますが、それを に.r変換する暗黙の変換 ( augmentStringin scala.Predef) を介してのみ使用できますStringOps。実装する必要があり、誰もそれを実行できなかったという事実以外に、これにはおそらく理由はありません。もちろん、これを呼び出すこともできます.r

Scala IDE は、 Implicit を解決するのに十分スマートなので、そこに表示されます。

于 2013-03-07T10:02:08.370 に答える