我需要自定义字符串格式扩展,但我有一些字符串格式问题。
这是代码。
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
为什么输出不一样?谢谢
我认为发生这种情况是因为扩展中格式化函数的返回类型是(_ format: String, _ arguments: CVarArg...)
。return必须为String(format: String, arguments:[CVarArg])
。函数中的参数arguments
的类型为[CVarArg]
。如果在return String格式类型中使用_ arguments: CVarArg...
而不是[CVarArg]
,则arguments
的参数将为[[CVarArg]]
。它现在实际上是2d数组。它可能因此而失败。
同样,这也不起作用太
print(String(format: "%.1f", [1.12])) // args is CVarArg...