18

こんにちは、このコードについて質問があります。

1)

let label = "The width is "
let width = 94
let widthLabel = label + String(width)

2)

let height = "3"
let number = 4
let hieghtNumber = number + Int(height)

最初の部分は問題なく動作していますが、2 番目の部分がうまくいかない理由がわかりません。「2 項演算子 "+" は 2 つの int オペランドに適用できません」というエラーが表示されますが、これはあまり意味がありません。誰かが説明を手伝ってくれますか?

4

2 に答える 2

17

1)Stringを受け取る init メソッドがあるため、最初のコードが機能しますInt。それからラインで

let widthLabel = label + String(width)

を作成するために、文字列を+演算子で連結していますwidthLabel

2) Swift のエラー メッセージはかなり誤解を招く可能性があります。実際の問題IntinitString. toIntこの状況では、メソッド onを使用できますString。次に例を示します。

if let h = height.toInt() {
    let heightNumber = number + h
}

andif letステートメントを使用して、に変換できることを確認する必要Stringがあります。この状況でアンラップを強制すると、アプリがクラッシュします。が に変換できない場合に何が起こるかについては、次の例を参照してください。InttoIntnilheightInt

let height = "not a number"

if let h = height.toInt() {
    println(number + h)
} else {
    println("Height wasn't a number")
}

// Prints: Height wasn't a number

スウィフト 2.0 アップデート:

Intを受け取るイニシャライザが追加されString、例 2 が作成されました (上記参照)。

if let h = Int(height) {
    let heightNumber = number + h
}
于 2015-05-20T12:31:11.227 に答える
0

必要なものはこれです:

let height = "3"
let number = 4
let heightNumber = number + height.toInt()!

から を取得したい場合はIntStringを使用しますtoInt()

于 2015-05-20T12:30:28.143 に答える