gpt4 book ai didi

swift - 泛型 ExpressibleByStringLiteral 字符串转换

转载 作者:行者123 更新时间:2023-11-30 12:45:40 27 4
gpt4 key购买 nike

我想创建 String 的扩展,它将类型 T 作为输入并创建该类型 Array T,其中字符串通过 String 作为输入分隔为多个组件:

extension String {
func convertToArrayOfTypesWithSeperator<T: ExpressibleByStringLiteral>(type : T.Type, seperator: String) -> [T] {
var res : [T] = []
self.components(separatedBy: seperator).forEach { s in
// Cast to Type
// Add to res
}
return res
}
}

现在我知道 T 必须符合 ExpressibleByStringLiteral ,即 docs状态应该有一个初始化:

init(stringLiteral value: Self.StringLiteralType)

所以我尝试将我的字符串组件 s 转换为我作为输入传递的类型:

let t = type.init(stringLiteral: s)

但是我不断收到有关它没有使用这些参数的初始化程序的错误。这里出了什么问题?

最佳答案

我自己没有使用过它,但从它的外观来看,我看不出有什么保证 Self.StringLiteralType 必须等于 String,因此你不能只将 String 实例传递给构造函数。

解决方案:将 s 转换为 T.StringLiteralType

关于swift - 泛型 ExpressibleByStringLiteral 字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41668657/

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