Я думаю, ты пропустил шаг. Я думаю о создателях функций как об аннотации, которую я должен добавить к функции, поэтому у аннотированной функции есть более приятный сайт вызова (только некоторые значения внутри фигурных скобок, которые могут помочь в быстрой компоновке / гроккинге). Я не знаю много о SpriteKit, но компилятор был доволен этим:
import PlaygroundSupport
import SpriteKit
import SpriteKit
public protocol Scene {
var width : Int {get}
var height : Int {get}
}
public struct EmptyScene : Scene {
public let width : Int
public let height: Int
}
@_functionBuilder public struct SceneBuilder {
public static func buildBlock(_ size:(Int,Int))->Scene {
return EmptyScene(width: size.0, height: size.1)
}
}
extension SKScene {
public convenience init(@SceneBuilder _ scene : () -> Scene){
let definition = scene()
self.init(size: CGSize(width: definition.width, height: definition.height))
}
}
*here*
@SceneBuilder
func buildDaScene() -> Scene { (320, 256) }
SKScene { buildDaScene() }