gpt4 book ai didi

swift - $T0 在 Swift 中是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 01:06:22 24 4
gpt4 key购买 nike

在 Swift 中编程时,有时我会看到包含 $T0$T1$T2 等的错误消息。与关闭有关。

这段代码工作正常:

let test = { (argument: Int) in
println("Argument is \(argument)")
}

test(42)

Xcode 的自动完成功能告诉我 test 的类型是 (Int) -> (),因此返回类型似乎是推断出来的。

但是如果我在闭包中添加一个return语句:

let test = { (argument: Int) in
println("Argument is \(argument)")
return
}

test(42)

我收到一条错误消息:

error: cannot convert the expression's type '(Int) -> (Int) -> $T0' to type '(Int) -> (Int) -> $T0'

$T0 是什么意思?

最佳答案

$T0 指的是匿名或未知类型,一般来说,如果您看到它,则表示类型推断失败,您可以通过更具体的类型来消除问题。

在您提到的特定情况下,问题是编译器当前在解析闭包类型时遇到问题,特别是当它们具有返回语句且没有显式类型时。为了让你的例子工作(也许你想在一个 block 的中间返回)你可以明确返回类型:

let test = { (argument: Int) -> Void in
println("Argument is \(argument)")
return
}

(注意:显然 Swift 1.2 修复了几个主要类的类似错误)

关于swift - $T0 在 Swift 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421891/

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