0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Swiftの標準入力、入力値のアンラップ

Last updated at Posted at 2024-12-20

はじめに

paizaだと、標準入力時のアンラップに!使いがちで、
他の方法を使わなくなってしまいそうなので、網羅しておきます。
下記で書いたけど、忘却しました。。。

問題

標準入力

func readLine(strippingNewline: Bool = true) -> String?

パラメータ

strippingNewline

説明

trueの場合、結果から改行文字や改行文字の組み合わせが削除されます。
falseの場合、改行文字やその組み合わせは結果に含まれます。
デフォルト値: true

戻り値

型: String?(オプショナルの文字列)

説明:

標準入力から読み取った文字列を返します。
入力がない場合、nilを返します。

アンラップ

if let

let n = Int(readLine()!)!

var lines: [String] = []

for _ in 0..<n {
    if let line = readLine() {
        lines.append(line)
    }
}

for a in lines {
    print(a)
}

guard let

let n = Int(readLine()!)!

var lines: [String] = []

for _ in 0..<n {
    guard let line = readLine() else {
      continue
    }
    lines.append(line) 
}

for a in lines {
    print(a)
}

強制アンラップ

let n = Int(readLine()!)!

var lines: [String] = []

for _ in 0..<n {
    var line = readLine()!
    lines.append(line)
}

for a in lines {
    print(a)
}

メモ
readLine()は入力がない場合、nilを返すことを念頭に置くと、
var lines: [String] = []で既にnilを配列からはじいてるので、
while let使った方が楽かもしれないとわかりました。
入力がnilになると自動でwhilefalseになって、繰り返しが止まってくれるため。

var lines: [String] = [] // [String?]じゃないので、nil入らない

while let line = readLine() {
    lines.append(line)
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?