我正在尝试将枚举数组转换为Swift中的字符串。我的枚举是可打印的,并且具有description属性。
我认为这可以工作:
", ".join(a.map { String($0) })
但是编译器抱怨
Missing argument label 'stringInterpolationSegment:' in call
所以,我按照建议
", ".join(a.map { String(stringInterpolationSegment: $0) })
但是我不理解:
您无法String
使用您的枚举类型调用初始化器,因为没有采用该类型的初始化器。
有许多String
带有stringInterpolationSegment
参数的初始化器,它们各自针对不同的类型实现。类型包括Bool
,Float
,Int
,和Character
等。当所有其他方法均失败时,将发生一般性回退:
/// Create an instance containing `expr`\ 's `print` representation
init<T>(stringInterpolationSegment expr: T)
这是您的枚举所需要的版本,因为它不是受支持的类型之一。
请注意,您还可以执行以下更简洁的操作:
", ".join(a.map { toString($0) })
您可以跳过闭包表达式(感谢您指出@Airspeed Velocity):
", ".join(a.map(toString))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句