gpt4 book ai didi

swift - 当只有一个值时,Function Builder 不工作?

转载 作者:行者123 更新时间:2023-12-02 00:50:02 25 4
gpt4 key购买 nike

我有一个函数生成器

@_functionBuilder
struct MyBuilder {
static func buildBlock(_ numbers: Int...) -> Int {
var result = 0
for number in numbers {
result += number * 2
}
return result
}
}

函数

func myFunc(@MyBuilder builder: () -> Int) -> Int {
builder()
}

使用

let a = myFunc {
10
20
}
print(a) // print 60 is work!

但是

let b = myFunc {
10
}
print(b) // print 10?

为什么 b 不是 20?

我尝试添加其他 buildBlock

static func buildBlock(number: Int) -> Int {
return number * 2
}

但不工作:(

有什么想法吗?

最佳答案

Any idea?

在失败的情况下发生的事情是 { 10 } 被直接视为 () -> Int 类型的闭包并且编译器没有出现完全考虑功能构建器。生成的代码只是一个返回 10 的函数。

这似乎是一个“功能”,其中将 { 10 } 识别为一个简单的闭包会覆盖它可能被识别为使用函数构建器。这可能只是一个编译器问题,或者更糟的是它可能是一个语言定义问题......

请前往 feedbackassistant.apple.com 并提交报告。

关于swift - 当只有一个值时,Function Builder 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58409839/

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