Swift中的字符串格式可选参数
奥拉 我不需要对快速的语言有太多的了解。我想把一些变量打印成字符串,其中一些是可选的Swift中的字符串格式可选参数,swift,Swift,奥拉 我不需要对快速的语言有太多的了解。我想把一些变量打印成字符串,其中一些是可选的 func onRegPin(timeOut: Int64, pin: String?)->() { String(format: "Timeout: %d Pin: %@", timeOut, pin!) } 如果pin在运行时为nil,我会得到一些断言或其他东西 是否有方法使用字符串打印此可选参数 func onRegPin(timeOut: Int64, pin: String?)->
func onRegPin(timeOut: Int64, pin: String?)->()
{
String(format: "Timeout: %d Pin: %@", timeOut, pin!)
}
如果pin在运行时为nil,我会得到一些断言或其他东西
是否有方法使用字符串打印此可选参数
func onRegPin(timeOut: Int64, pin: String?)->()
{ if let pin = pin{
String(format: "Timeout: %d Pin: %@", timeOut, pin)
}else{
String(format: "Timeout: %d No Pin ", timeOut)
}
}
更新:使用默认参数
func onRegPin(timeOut: Int64, pin:String?="No pin"){
String(format: "Timeout: %d Pin: %@", timeOut, pin!)
}
如果pin为nil,则仅在超时时调用函数
onRegPin(3423)
否则,如果pin不为零:
onRegPin(3423, pin:"Pin")
更新:使用默认参数
func onRegPin(timeOut: Int64, pin:String?="No pin"){
String(format: "Timeout: %d Pin: %@", timeOut, pin!)
}
如果pin为nil,则仅在超时时调用函数
onRegPin(3423)
否则,如果pin不为零:
onRegPin(3423, pin:"Pin")
您可以这样做:
如果pin
为nil
则pinValue
为空字符串,否则未包装的pin
值为空字符串
func onRegPin(timeOut: Int64, pin: String?)->()
{
let pinValue = pin ?? ""
String(format: "Timeout: %d Pin: %@", timeOut, pinValue)
}
您可以这样做:
如果pin
为nil
则pinValue
为空字符串,否则未包装的pin
值为空字符串
func onRegPin(timeOut: Int64, pin: String?)->()
{
let pinValue = pin ?? ""
String(format: "Timeout: %d Pin: %@", timeOut, pinValue)
}
您需要的是在使用之前打开可选的。Swift 1.2中的标准方法是使用if let
(还有@vadian的答案中的“零合并”)
另外,函数应该返回一个字符串,在我的示例中,它是可选的,因为它可能会失败:
func onRegPin(timeOut: Int64, pin: String?) -> String? {
if let pinOK = pin {
return String(format: "Timeout: %d Pin: %@", timeOut, pinOK)
}
return nil
}
if let regpin = onRegPin(30, "test") {
println(regpin) // prints "Timeout: 30 Pin: test"
}
对于Swift 2(Xcode 7),它可以是:
func onRegPin(timeOut: Int64, pin: String?) -> String? {
guard let pinOK = pin else { return nil }
return String(format: "Timeout: %d Pin: %@", timeOut, pinOK)
}
if let regpin = onRegPin(30, pin: "test") {
print(regpin)
}
您需要的是在使用之前打开可选的。Swift 1.2中的标准方法是使用if let
(还有@vadian的答案中的“零合并”)
另外,函数应该返回一个字符串,在我的示例中,它是可选的,因为它可能会失败:
func onRegPin(timeOut: Int64, pin: String?) -> String? {
if let pinOK = pin {
return String(format: "Timeout: %d Pin: %@", timeOut, pinOK)
}
return nil
}
if let regpin = onRegPin(30, "test") {
println(regpin) // prints "Timeout: 30 Pin: test"
}
对于Swift 2(Xcode 7),它可以是:
func onRegPin(timeOut: Int64, pin: String?) -> String? {
guard let pinOK = pin else { return nil }
return String(format: "Timeout: %d Pin: %@", timeOut, pinOK)
}
if let regpin = onRegPin(30, pin: "test") {
print(regpin)
}
好吧,我们的想法是不检查“pin”或为铸造引入新的var,还有另一种解决方案,如println:
字符串(格式:“超时:%d针:%@”,超时“\(针)”)
好吧,我们的想法是不检查“pin”或为铸造引入新的var,还有另一种解决方案,如println:
字符串(格式:“超时:%d针:%@”,超时“\(针)”)
虽然这对于日志记录很好,但应该注意,如果要在某处显示此字符串,“字符串插值生成可选值的调试说明”-结果将类似于“可选(…)”。虽然这对于日志记录很好,但应该注意,如果要在某处显示此字符串,“字符串插值生成可选值的调试说明”-结果类似于“可选(…)”。