Swift 自定义字符串格式扩展总是 return 0
Swift custom string format extension always return 0
我需要我的自定义字符串格式扩展,但我有一些字符串格式问题。
这是代码。
print(String(format: "%.1f", 1.12))
print(String.format("%.1f", 1.12))
extension String {
static func format(_ format: String, _ arguments: CVarArg...) -> String {
return String(format: format, arguments)
}
}
输出
1.1
0.0
为什么输出不一样?谢谢!
我认为这是因为扩展中格式函数的 return 类型是 (_ format: String, _ arguments: CVarArg...)
。 return 必须是 String(format: String, arguments:[CVarArg])
。函数中的参数 arguments
是 [CVarArg]
的类型,如果您在 [=23= 中使用 _ arguments: CVarArg...
而不是 [CVarArg]
] 字符串格式类型,arguments
的参数将是 [[CVarArg]]
。它现在实际上是二维数组。它可能因此而失败。
这也行不通
print(String(format: "%.1f", [1.12])) // args is CVarArg...
我需要我的自定义字符串格式扩展,但我有一些字符串格式问题。
这是代码。
print(String(format: "%.1f", 1.12))
print(String.format("%.1f", 1.12))
extension String {
static func format(_ format: String, _ arguments: CVarArg...) -> String {
return String(format: format, arguments)
}
}
输出
1.1
0.0
为什么输出不一样?谢谢!
我认为这是因为扩展中格式函数的 return 类型是 (_ format: String, _ arguments: CVarArg...)
。 return 必须是 String(format: String, arguments:[CVarArg])
。函数中的参数 arguments
是 [CVarArg]
的类型,如果您在 [=23= 中使用 _ arguments: CVarArg...
而不是 [CVarArg]
] 字符串格式类型,arguments
的参数将是 [[CVarArg]]
。它现在实际上是二维数组。它可能因此而失败。
这也行不通
print(String(format: "%.1f", [1.12])) // args is CVarArg...