考虑一个简单的双精度元组数组:
let sst = [(1.0,2.0),(3.0,4.0)]它怎么能被串行化呢?这是我的尝试:
let ssr = sst.map{ f in String(f) }.joined(separator:",")结果如下:
error: repl.swift:32:33: error: type '(Double, Double)' cannot conform to 'LosslessStringConvertible'; only struct/enum/class types can conform to protocols
let ssr = sst.map{ f in String(f) }.joined(separator:",")
^
repl.swift:32:33: note: required by initializer 'init(_:)' where 'T' = '(Double, Double)'
let ssr = sst.map{ f in String(f) }.joined(separator:",")所需的输出为
["(1.0,2.0)","(3.0,4.0)"]发布于 2020-05-20 05:15:53
接受@MartinR的提示:
"\(sst)"
$R2: String = "[(1.0, 2.0), (3.0, 4.0)]这并不完全是我需要的,但它提供了一个关键提示,即String()只是比预期的更有限,但我们可以使用语言级别的字符串:
let sst = [(1.0,2.0),(3.0,4.0)]
let sout = sst.map{("\($0.0)","\($0.1)")}
print(sout)
[("1.0", "2.0"), ("3.0", "4.0")]现在,这仍然不是最终的期望输出。一些不幸的苦差事把我们带到了最终产品:
let sout = sst.map{"(" + "\($0.0)" + "," + "\($0.1)" + ")"}
sout
[0] = "(1.0,2.0)"
[1] = "(3.0,4.0)"因此,这是大量的工作,以stringify的元组。我希望有一种更简洁和清晰的方法。
https://stackoverflow.com/questions/61883590
复制相似问题