我需要连接String
和Int
,如下所示:
let myVariable: Int = 8
return "first " + myVariable
但它没有编译,错误:
二元运算符' +'不能应用于' String'类型的操作数和' Int'
连接String + Int的正确方法是什么?
答案 0 :(得分:62)
如果您想在字符串中添加数字,可以使用String Interpolation:
return "first \(myVariable)"
答案 1 :(得分:41)
您有两个选项;
return "first " + String(myVariable)
或
return "first \(myVariable)"
答案 2 :(得分:4)
要将Int添加到String,您可以执行以下操作:
return "first \(myVariable)"
答案 3 :(得分:4)
如果您正在做很多事情,请考虑让操作员更具可读性:
func concat<T1, T2>(a: T1, b: T2) -> String {
return "\(a)" + "\(b)"
}
let c = concat("Horse ", "cart") // "Horse cart"
let d = concat("Horse ", 17) // "Horse 17"
let e = concat(19.2345, " horses") // "19.2345 horses"
let f = concat([1, 2, 4], " horses") // "[1, 2, 4] horses"
operator infix +++ {}
@infix func +++ <T1, T2>(a: T1, b: T2) -> String {
return concat(a, b)
}
let c1 = "Horse " +++ "cart"
let d1 = "Horse " +++ 17
let e1 = 19.2345 +++ " horses"
let f1 = [1, 2, 4] +++ " horses"
当然,您可以使用任何有效的中缀运算符,而不仅仅是+++
。
答案 4 :(得分:3)
Optional
标记为可选变量时, !
关键字会出现。
要避免打印输出中的Optional关键字,您有两个选择:
(!)
符号在你的情况下,这可以正常工作
return "first \(myVariable!)"
答案 5 :(得分:0)
var variableString = "Horse"
variableString += " and carriage"
// variableString is now "Horse and carriage"