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)

第一部分工作得很好,但我不明白为什么第二部分没有。我收到错误“二进制运算符“+”不能应用于两个 int 操作数”,这对我来说没有多大意义。有人可以帮我解释一下吗?

4

2 回答 2

17

1)第一个代码有效,因为String它有一个 init 方法,它需要一个Int. 然后上线

let widthLabel = label + String(width)

您正在使用运算符连接字符串+以创建widthLabel.

2) Swift 错误消息可能会产生很大的误导性,实际问题是Int没有init采用String. 在这种情况下,您可以使用toInt方法 on String。这是一个例子:

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

您应该使用 andif let语句来检查是否String可以转换为,Int因为如果失败toInt将返回;nil在这种情况下强制展开将使您的应用程序崩溃。height请参阅以下示例,了解如果不能转换为会发生什么Int

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 回答