#4 Swiftで学ぶ標準入力の基本

Swiftにおける標準入力は、主にターミナル上で動くプログラムを書く際に使う機能です。この記事では、Swiftで利用者からの入力を受け取る基本的な方法と、安全な変換方法を解説します。

readLine()を使う

Swiftには、Kotlinと同じくreadLine()という機能が用意されています。

print("名前を入力してください: ")
let name = readLine()

このreadLine()の結果も、値が入っていないかもしれない「オプショナル型」として返されます。

既定値を使って安全に取り出す

入力が無かった場合の既定値を用意しておきたい場合は、??(nil合体演算子)が便利です。

let name = readLine() ?? "名無しさん"
print("こんにちは、\(name)さん")

安全に数値へ変換する

数値として扱いたい場合は、オプショナル型を安全に扱うための書き方と組み合わせます。

if let input = readLine(), let age = Int(input) {
    print("あなたは\(age)歳です")
} else {
    print("正しい数値を入力してください")
}

「入力が取得できて、かつ数値に変換できた場合だけ」処理を進める、という安全な書き方がSwiftらしい特徴です。

複数の値をまとめて受け取る

スペース区切りで複数の値が入力される場合は、splitで分割してから、それぞれを変換します。

if let line = readLine() {
    let numbers = line.split(separator: " ").compactMap { Int($0) }
    print(numbers.reduce(0, +))
}

compactMapは、変換に失敗した要素(nil)を自動的に取り除きながら、変換に成功した値だけを集めてくれる便利なメソッドです。

guard文で早期リターンする

入力が正しくない場合にすぐ処理を打ち切りたいときは、guardという書き方も便利です。

guard let input = readLine(), let age = Int(input) else {
    print("正しい数値を入力してください")
    return
}
print("あなたは\(age)歳です")

if letと違い、guardは条件を満たさない場合に必ず処理を抜ける前提で書くため、正常系の処理をネストさせずにまっすぐ書ける利点があります。

Swiftならではの注意点

Swiftの標準入力は、主にコマンドラインツールなど限られた用途で使われます。iPhoneアプリの開発では、キーボードからの直接入力ではなく、画面上のテキスト入力欄(UI部品)を使うのが一般的なので、用途によって扱い方が変わる点を覚えておきましょう。

まとめ

Swiftの標準入力はreadLine()で受け取り、オプショナル型を安全に扱う書き方と組み合わせるのが基本です。「値があるかもしれないし、ないかもしれない」という前提でコードを書く癖をつけましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Swiftをもっと学びたい方には「これからつくる iPhoneアプリ開発入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本