#4 Scalaで学ぶ標準入力の基本
Scalaにおける標準入力は、JVM上で動く言語らしく、Javaの仕組みを利用しつつ、より簡潔な専用の機能も用意されています。この記事では、Scalaで利用者からの入力を受け取る基本的な方法と、実務での注意点を解説します。
scala.io.StdInを使う
Scalaでは、scala.io.StdInという機能を使って入力を受け取ります。
println("名前を入力してください: ")
val name = scala.io.StdIn.readLine()
println(s"こんにちは、${name}さん")
KotlinやSwiftのreadLine()と似た、シンプルな書き方になっています。よく使う場合はimport scala.io.StdIn._としておくと、readLine()だけで呼び出せて記述が短くなります。
数値として受け取る
数値をそのまま受け取りたい場合は、専用の機能を使います。
val age = scala.io.StdIn.readInt()
val height = scala.io.StdIn.readDouble()
ただし、数字ではない文字が入力されるとエラーになるため、実際のプログラムでは入力のチェックも合わせて行います。文字列として受け取ってからtoIntOptionで安全に変換する方法もよく使われます。
val input = scala.io.StdIn.readLine()
input.toIntOption match {
case Some(n) => println(s"数値として受け取りました: $n")
case None => println("数値ではありません")
}
toIntOptionは、変換に失敗しても例外を発生させず、代わりに「値が無い」ことを表すNoneを返してくれる安全な変換方法です。
複数の値をまとめて受け取る
スペース区切りで複数の値が入力される場合は、splitで分割してから、それぞれを変換します。
val line = scala.io.StdIn.readLine() // 例: "3 5"
val numbers = line.split(" ").map(_.toInt)
println(numbers.sum) // 8
Scalaならではの注意点
ScalaはJavaの資産を活かせる言語のため、JavaのScannerを使った入力の受け取り方もそのまま動きます。ただし、学習中はscala.io.StdInを使ったScalaらしい書き方に慣れておくほうが、この先の学習がスムーズに進みます。特にtoIntOptionのような「失敗する可能性がある処理をOptionで安全に扱う」考え方は、Scalaのさまざまな場面で繰り返し登場する重要な発想なので、標準入力の練習を通じて早めに馴染んでおくとよいでしょう。
まとめ
Scalaの標準入力はscala.io.StdInを使うのが基本です。readLine()とreadInt()を状況に応じて使い分け、失敗する可能性がある変換にはtoIntOptionを活用しましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Scalaをもっと学びたい方には「実践Scala入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿