gpt4 book ai didi

parameters - 带有字符串参数的 Swift 断言

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:26 26 4
gpt4 key购买 nike

为什么在 Swift 中这是合法的...

assert( false, "Unexpected diagnosis: \(diagnosis)" );

这不是吗?

let assertString = "Unexpected diagnosis: \(diagnosis)"
assert( false, assertString );

在第二个片段中,我得到了错误...

Cannot invoke 'assert' with an argument list of type '(BooleanLiteralConvertible, String)

当然,在这两种情况下,第二个参数都是一个字符串。

最佳答案

断言的第二个参数声明为 message: @autoclosure () -> Str_message: StaticString。我猜 "Unexpected diagnosis:\(diagnosis)" 被视为表达式并由 @autoclosure 获取,而 assertString 只是一个 String 变量不能转换为闭包或StaticString

StaticString 只能用:

static func convertFromExtendedGraphemeClusterLiteral(value: StaticString) -> StaticString
static func convertFromStringLiteral(value: StaticString) -> StaticString

我想这可以解释为什么 swift 手册已经注意到您不能在 assert() 中使用字符串插值,因为不支持 StringInterpolationConvertible

关于parameters - 带有字符串参数的 Swift 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137861/

26 4 0