什么使SwiftUI的DSL成为可能?
苹果的新SwiftUI框架似乎使用了一种新型语法,可以有效地构建元组,但又具有另一种语法: var body: some View { VStack(alignment: .leading) { Text("Hello, World") // No comma, no separator ?! Text("Hello World!") } } 尝试解决这种语法的实际含义时,我发现VStack这里使用的初始化程序将类型的闭包() -> Content 作为第二个参数,其中Content的通用参数View是通过闭包推断出来的。找出什么类型Content推断的,我对代码进行了一些更改,并保持其功能: var body: some View { let test = VStack(alignment: .leading) { Text("Hello, World") Text("Hello World!") } return test } 以此,test表明自己是类型VStack<TupleView<(Text, Text)>>,即Content类型TupleView<Text, Text>。抬头TupleView,我发现它是一个源自SwiftUI自身的包装器类型,只能通过传递应该包装的元组来初始化。 题 现在,我想知道Text这个示例中的两个实例如何转换为TupleView<(Text, Text)>。这被黑入SwiftUI,因此无效的常规Swift语法吗? …