2016-06-22 3 views
1

変数とメソッドを定義できます。彼らはいくつかの親クラスに属している必要があります。実際、this.getClassは何かを出力します。しかし、それは夢中です。現在のコンテキストとは何ですか?どのようにコンテキストを別のオブジェクトに切り替えるのですか?たとえば、スカラコンビネータはパーサごとのメソッドを要求します。つまり、大きな(複数の)クラスを扱う必要があります。コマンドラインでそれを調整するには、どのようにオブジェクトの範囲に入るのですか?Scala REPLの現在のクラスは何ですか?

+0

REPLは、各評価のために、1つのレベルを複数のネストされたスコープをダウン作成しています。そのため、以前の 'val'や' def'を再定義(影)することができます。オブジェクトを "微調整"することはできません。Scalaはコンパイルされた言語であり、オブジェクトを作成します。 –

答えて

1

プロンプトまたは:pasteモードでクラスを入力できます。

$ scala 
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_65). 
Type in expressions for evaluation. Or try :help. 

scala> class C 
defined class C 

scala> :pa 
// Entering paste mode (ctrl-D to finish) 

class C { 
    val c = 42 
} 

// Exiting paste mode, now interpreting. 

defined class C 

scala> 

EDITORを使用すると、履歴を編集できます。その後、この古いMacの

$ EDITOR=/Applications/TextEdit.app/Contents/MacOS/TextEdit 

scala> :hi 
657 Future(42) 
658 .value 
659 class C 
660 :pa 
661 class C { 
662 val c = 42 
663 } 

scala> :ed 661- 
+0

クラス全体をペーストすることは、(コマンドライン)インタープリタの目的をすべて破棄します。ブラウザを使用してSOにアクセスします。 Chromeを使用して、一部のjavascript関数でデバッガのブレークポイントを設定します。 REPL - コンソールコマンドを使用して、関数のコンテキストで値を評価および設定する方法を参照してください。私は歴史の編集がこれを可能にする方法を理解していない。 –

+0

クラスを調整するには、クラスを編集する必要があります。しかたがない。 –

+0

ちなみに、2.12には任意のコンテキストを動的に設定するためのScriptEngineがあります。 REPLでは通常、いくつかのvarsを定義してそれらを参照します。 –

関連する問題