加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – 有没有办法在Swift中重写数组到字符串的转换?

发布时间:2020-12-14 02:24:02 所属栏目:百科 来源:网络整理
导读:我正在玩 Swift试图让它看起来更“动态打字” – 只是为了好玩,没有预期的产值. 现在我陷入了将内置类型转换为String的覆盖行为. 例如,我想看看Array的这个输出: let nums = [1,2,3]print(nums) // "I'm an array" 到目前为止,我试过 对NSArray进行扩展(不
我正在玩 Swift试图让它看起来更“动态打字” – 只是为了好玩,没有预期的产值.

现在我陷入了将内置类型转换为String的覆盖行为.

例如,我想看看Array的这个输出:

let nums = [1,2,3]
print(nums) // "I'm an array"

到目前为止,我试过

>对NSArray进行扩展(不编译)
>实现CustomStringConvertible(不编译)
>对Array进行扩展(编译,不做任何更改)

好像我走错了路:

extension Array {
    public var description: String { return "An array" }
}

至少在Swift中是否可行?

有任何想法吗?

这不起作用,因为Array覆盖了描述.如果数组没有覆盖它,那么它将打印“一个数组”.类方法’胜过’扩展名.
extension Array {
    public var description: String { return "An array" }
}

您可以为数组创建一个Wrapper类.这是一种解决方法,但不会覆盖数组的描述本身.

class ArrayWrapper<T> : CustomStringConvertible{
    var array : Array<T> = Array<T>()
    var description: String { return "An array" }
}

然后你可以像这样使用它.

var array = ArrayWrapper<Int>()
array.array = [1,3]
print(array) //prints "An Array"
print(array.array) //still prints "[1,3]"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读