数组到Swift中的字符串,stringInterpolationSegment

埃里克·康纳

我正在尝试将枚举数组转换为Swift中的字符串。我的枚举是可打印的,并且具有description属性。

我认为这可以工作:

", ".join(a.map { String($0) }) 

但是编译器抱怨

Missing argument label 'stringInterpolationSegment:' in call

所以,我按照建议

", ".join(a.map { String(stringInterpolationSegment: $0) })

但是我不理解:

  1. 为什么需要参数标签?
  2. stringInterpolationSegment的类型是什么?
瓦瓦瓦玛

您无法String使用您的枚举类型调用初始化器,因为没有采用该类型的初始化器。

有许多String带有stringInterpolationSegment参数的初始化器它们各自针对不同的类型实现。类型包括BoolFloatInt,和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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章