スウィフトのreadLine()、スウィフトのprint()
スウィフト入力
SwiftのPlaygroundsでは、標準入力はできません。iOSアプリケーションでも、明らかな理由から同様にできません。コマンドラインアプリケーションを使用することで、ユーザーからの入力を読み取ることが可能です。readLine()はユーザーからの入力を読み取るために使用されます。2つの形式があります。
- readLine() : The default way.
- readLine(strippingNewLine: Bool) : This is default set to true. Swift always assumes that the newline is not a part of the input
readLine()関数は常にデフォルトでOptional Stringを返します。メイン.swiftファイルに以下の行を追加してください。
let str = readLine() //assume you enter your Name
print(str) //prints Optional(name)
オプションを解除するには、以下のコードを使用できます。
if let str = readLine(){
print(str)
}
整数型(Int)や浮動小数点型(Float)を読み込む。
入力をInt型またはFloat型として読み取るためには、入力から返された文字列をこれらのいずれかに変換する必要があります。
if let input = readLine()
{
if let int = Int(input)
{
print("Entered input is \(int) of the type:\(type(of: int))")
}
else{
print("Entered input is \(input) of the type:\(type(of: input))")
}
}
Floatでは、IntのイニシャライザをFloatで置き換えてください。
複数の入力を読み取ることを読む
以下のコードは複数の入力を読み取り、また、入力の中に重複があるかどうかも確認します。
while let input = readLine() {
guard input != "quit" else {
break
}
if !inputArray.contains(input) {
inputArray.append(input)
print("You entered: \(input)")
} else {
print("Negative. \"\(input)\" already exits")
}
print()
print("Enter a word:")
}
特定の文字列が入力された場合、ガードレット文はループを終了させるために使用されます。通常通りprint()は出力を画面に表示します。現在の入力が配列内に存在しない場合、それが追加されます。上記のコードをXcodeのコマンドラインで実行した場合のサンプル結果は以下のとおりです。
スペースで区切られた入力を読み込む。
以下のコードは、スペースで区切られた配列形式で入力を読み取ります。
let array = readLine()?
.split {$0 == " "}
.map (String.init)
if let stringArray = array {
print(stringArray)
}
split関数はスペースを区切りとして機能します。入力をスペースで分割し、それぞれを文字列としてマッピングします。最後にそれらは配列の形で結合されます。
2次元配列の読み込み。
以下のコードは、2次元配列を読み込みます。
var arr = [[Int]]()
for _ in 0...4 {
var aux = [Int]()
readLine()?.split(separator: " ").map({
if let x = Int($0) {
aux.append(x)
}
else{
print("Invalid")
}
})
arr.append(aux)
}
print(arr)
上記のコードでは、配列内に4つのサブ配列を作成することができます。行に何も入力せずにエンターキーを押すと、空のサブ配列として扱われます。
素早くprint()する。
私たちは、標準出力でよくprint()文を使用してきました。実際に、print関数は次のようになります: print(_:separator:terminator:) print()文は、デフォルトで改行ターミネータと一緒に表示されます。
print(1...5) //// Prints "1...5"
print(1.0, 2.0, 3.0, 4.0, 5.0) //1.0 2.0 3.0 4.0 5.0
print("1","2","3", separator: ":") //1:2:3
for n in 1...5 {
print(n, terminator: "|")
}
//prints : 1|2|3|4|5|
- terminator adds at the end of each print statement.
- separator adds between the output values.
文字列と値の連結 文字列に値を追加するには、\(value_goes_here)を使用します。
var value = 10
print("Value is \(value)") // Value is 10
これにより、Swiftの標準入出力に関するチュートリアルは終わりです。