0

我有这个向下功能,我希望内容带有默认值,我希望这个功能开始工作:

func viewFunction<Content: View>(content: Content = { Text("Hello!") }) -> some View {

    return content

}

我知道我可以出于这个原因拆分功能,但我希望拥有带有内容默认值的功能,我也不想拥有 2 个功能。

我的目标:我希望能够以以下形式使用我的功能:viewFunction()


更新:

Swift 没有通用占位符的默认值。

4

3 回答 3

3

只需:

func viewFunction<Content: View>(content: () -> Content = { Text("hello") as! Content }) -> some View {
  return content()
}

于 2021-03-03T14:04:21.887 回答
0

我喜欢使用as!-casting 的答案,因为它可以在不生成代码的情况下保留文档。

但一般的解决方案是重载,因为 Swift 没有通用占位符的默认值。

注意:这个问题不是 SwiftUI 特有的。

func viewFunction<Content: View>(content: Content) -> some View { content }

func viewFunction() -> some View {
  viewFunction(content: Text("Hello!"))
}
于 2021-03-03T16:24:50.127 回答
0

最可能的方法是拥有 2 个功能。喜欢向下的代码:

PS:我们不能拥有带有泛型类型默认值的函数。

struct ContentView: View {
    
    var body: some View {

        viewFunction(content: Text("Hello, world!"))
        
        viewFunction()
    }
}


func viewFunction<Content: View>(content: Content) -> some View {

    return content

}

func viewFunction() -> some View {

    return Text("Hello, world!")

}
于 2022-01-01T20:47:16.287 回答