- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在 swift 遇到的最奇怪的问题,它让我疯狂地想弄清楚。
我有一个名为 Algorithm
的结构体符合 LosslessStringConvertible
,所以它有一个可失败的初始化。只是为了测试它,它总是返回 nil:
init?(_ description: String) {
return nil
}
Algorithm
也符合
ExpressibleByStringLiteral
,使用之前的init:
extension Algorithm: ExpressibleByStringLiteral {
init(stringLiteral value: String) {
self.init(value)!
}
}
但是当我创建
Algorithm
的实例时从第一个 init 开始,我可以在 Xcode 中看到它不是可选的
let a = Algorithm("test")
a // a: Algorithm
然后我运行上面的代码,它在行
self.init(value)!
上崩溃了,来自
ExpressibleByStringLiteral
在里面。
最佳答案
该问题已在 SR-10259 中报告似乎这是来自 Literal initialization via coercion (SE-0213) 的预期行为
可能的解决方法:
Algorithm.init("test") // don't coerce, call initializer
Algorithm(String("test")) // convert literal to a `String` first
关于Swift 可失败初始化器调用 ExpressibleByStringLiteral 初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69059391/
这是我在 swift 遇到的最奇怪的问题,它让我疯狂地想弄清楚。 我有一个名为 Algorithm 的结构体符合 LosslessStringConvertible ,所以它有一个可失败的初始化。只是
我想创建 String 的扩展,它将类型 T 作为输入并创建该类型 的 Array T,其中字符串通过 String 作为输入分隔为多个组件: extension String { func
考虑以下枚举 enum Text: Equatable { case plain(String) case attributed(NSAttributedString) } 我让它符合
我创建了一个 @dynamicMemberLookup 模型,但出现了一个我无法理解的错误。关于如何解决这个问题的任何帮助? struct Blog { let title: String
我正在尝试使用来自 swift 文件的定义为 Objective C 方法的方法 objective-c 中的方法定义为 -(instancetype) init:(NSString*)string
我有这个代码: private func validate(text: String) -> String { let acceptableChar: Set = ["0", "9", "8"
一个 playground 只包含一个 NSDecimalNumber 的扩展,它符合 ExpressibleByStringLiteral 和一个变量 x ,它试图利用该扩展,LLDB RPC 服务
我是一名优秀的程序员,十分优秀!