REPL の利用
Scala を対話的に実行します。
「REPL の利用」はCoddyKit上の無料Scala for Backend Engineering & Functional Programmingレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはScala for Backend Engineering & Functional Programming学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。
REPLとは何か
REPLはRead-Eval-Print Loopの略です。Scalaの式を入力すると、その結果をすぐに確認できる対話型シェルです。
ターミナルでscala(またはscala-cli repl)を実行すると起動します。プログラム全体を書かずに言語を試せる、最も手軽な方法です。
最初の式
任意の式を入力してEnterキーを押してください。REPLがその式を評価し、結果、型、生成された名前を表示します。
たとえば1 + 1と入力すると、val res0: Int = 2のように表示されます。
object Main {
def main(args: Array[String]): Unit = {
println(1 + 1)
}
}res変数
計算したすべての結果は、resN(res0、res1など)という名前の変数に自動的に保存されます。
後の式でこれらの名前を再利用できるため、REPLを使っていると計算機を使っているような感覚になります。
object Main {
def main(args: Array[String]): Unit = {
val res0 = 2 + 3
val res1 = res0 * 10
println(res1)
}
}型情報
特に便利な機能の一つが、すべての結果の型をREPLが表示してくれることです。
"hello"と入力すると、val res0: String = helloと表示されます。これにより、任意の式に対してScalaがどの型を推論するのかを学べます。
object Main {
def main(args: Array[String]): Unit = {
val greeting = "hello"
println(greeting)
}
}値の定義
REPLではvalを使って名前付きの値を定義できます。定義した値はセッションの残りの間保持されます。
一度定義すれば、それ以降のどの行からでも参照できます。
object Main {
def main(args: Array[String]): Unit = {
val pi = 3.14159
val radius = 2.0
println(pi * radius * radius)
}
}関数の定義
1行の式だけに限定されるわけではありません。REPLで関数を直接定義し、すぐに呼び出せます。
これにより、小さなヘルパーを組み立てて即座にテストできます。
object Main {
def square(x: Int): Int = x * x
def main(args: Array[String]): Unit = {
println(square(5))
}
}複数行の入力
開き波かっこなど、不完全な内容を入力すると、REPLは継続プロンプトを表示して残りの入力を待ちます。
そのため、REPLが早まって評価を始めることなく、複数行の定義を自然に貼り付けたり入力したりできます。
object Main {
def main(args: Array[String]): Unit = {
val total =
1 +
2 +
3
println(total)
}
}REPLでのインポート
ファイル内と同じように、REPL内でも任意のものをimportできます。標準ライブラリのヘルパーを取り込むときに便利です。
たとえばimport scala.math.*を実行すると、sqrtやabsなどを使えるようになります。
import scala.math.sqrt
object Main {
def main(args: Array[String]): Unit = {
println(sqrt(16.0))
}
}便利なREPLコマンド
REPLには、コロンで始まる特別なコマンドがあります。
:helpはすべてのコマンドを一覧表示します:resetはセッションをクリアします:quitはREPLを終了します:type exprは式を実行せずにその型を表示します
REPLを使う理由
REPLは次のような用途に最適です。
- 不慣れなAPIをすばやく試す
- 式がどの型を生成するか確認する
- プロジェクトに追加する前にロジックを試作する
- 対話的に言語を学ぶ
すべてを組み合わせる
1回のセッションで値を定義し、関数を書き、ライブラリをインポートし、結果を連鎖させることができます。REPLはそれらすべてをスコープ内に保持します。
以下は、1行ずつ組み立てていける小さな例です。
object Main {
def celsiusToF(c: Double): Double = c * 9 / 5 + 32
def main(args: Array[String]): Unit = {
val temps = List(0.0, 25.0, 100.0)
println(temps.map(celsiusToF))
}
}理解度チェック
Scala REPLについての理解度を確認しましょう。
まとめ
REPLがScala用の対話型Read-Eval-Print Loopであることを学びました。
- 各結果について、値、型、自動生成された
resNという名前を表示します - セッション中保持される
valや関数を定義できます - ライブラリを
importしたり、複数行の入力を使ったりできます :type、:reset、:quitなどのコマンドでセッションを操作できます
よくある質問
「REPL の利用」レッスンは無料ですか?
はい。「REPL の利用」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Scala for Backend Engineering & Functional Programmingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。
「REPL の利用」で何を学びますか?
Scala を対話的に実行します。 ブラウザで直接実行するハンズオンコードでScala for Backend Engineering & Functional Programmingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Scala for Backend Engineering & Functional Programmingを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのScala for Backend Engineering & Functional Programmingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「REPL の利用」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このScala for Backend Engineering & Functional Programmingレッスンでコードを書いて実行できますか?
はい。すべてのScala for Backend Engineering & Functional Programmingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。