0Pricing
Scala for Backend Engineering & Functional Programming · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. REPL の利用
  2. val、var、型
  3. 文より式
  4. 文字列補間
← Scala for Backend Engineering & Functional Programmingに戻る