gpt4 book ai didi

arrays - 有没有办法在 Swift 中覆盖数组到字符串的转换?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:02 24 4
gpt4 key购买 nike

我正在研究 Swift,试图让它看起来更“动态类型化”——只是为了好玩,没有预期的生产值(value)。

现在我坚持将内置类型转换为 String 的覆盖行为。

例如,我希望看到 Array 的输出:

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

到目前为止我已经尝试过

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

看来我走错了路:

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

发出警告:

Conformance of 'Array' to protocol 'CustomStringConvertible' was already stated in the type's module 'Swift'

这在 Swift 中可行吗?

最佳答案

这不起作用,因为数组会覆盖描述。如果 array 没有覆盖它,那么它将打印“An 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,2,3]
print(array) //prints "An Array"
print(array.array) //still prints "[1, 2, 3]"

关于arrays - 有没有办法在 Swift 中覆盖数组到字符串的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39046816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com