gpt4 book ai didi

swift - StringLiteralConvertible 和 failable init

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:53 26 4
gpt4 key购买 nike

当由于无效输入而无法初始化对象时,可以使用“failable init”。

init?(s:String) {
if s.isEmpty {
return nil
}
// now set up instance vars
}

然后你可以这样做:

var x:Foo = ""
if x == nil { blah blah

但是如果您遵守 StringLiteralConvertible 协议(protocol)并实现这 3 个初始化,您就不能有一个失败的初始化。

我的问题:使用 StringLiteralConvertible 时如何检查无效输入?

这是一个 gist如果您从未使用过 StringLiteralConvertible,那么这 3 个 init 中的一个。

最佳答案

如果使用 StringLiteralConvertible,则可以将文字字符串分配给变量:

var x: Foo = "test"

您提供的任何字符串都可以,只要它是有效的字符串即可。如果不是字符串:

var x: Foo = 1

或者它是一个格式错误的字符串:

var x: Foo = test"

它不会通过编译,因此可失败的初始化程序将毫无用处。

但是如果你所说的有效是指取决于字符串的内容,那么你是对的。文字必须在语法上正确且具有预期的类型,以便在使用它的上下文中被视为有效,我认为没有办法覆盖它。

关于swift - StringLiteralConvertible 和 failable init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28501071/

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