如何在不传入值的情况下调用带参数的函数? [迅捷游乐场]
Posted
技术标签:
【中文标题】如何在不传入值的情况下调用带参数的函数? [迅捷游乐场]【英文标题】:How is it possible to call a function with parameters without passing in values? [Swift Playground] 【发布时间】:2017-06-30 16:42:36 【问题描述】:Swift Playground 提供了以下代码。不传入参数如何调用 speakText(graphic: )? (显然图形已经放在另一段代码中了)
// Speak the text of graphic.
func speakText(graphic: Graphic)
speak(graphic.text)
func addGreeting(touch: Touch)
if touch.previousPlaceDistance < 60 return
let greetings = ["howdy!", "hello", "hi", "ciao", "yo!", "hey!", "what’s up?"]
let greeting = greetings.randomItem
let graphic = Graphic(text: greeting)
graphic.textColor = #colorLiteral(red: 0.9686274529, green: 0.78039217, blue: 0.3450980484, alpha: 1)
graphic.fontName = .chalkduster
scene.place(graphic, at: touch.position)
graphic.rotation = randomDouble(from: -30, to: 30)
// Create and add Speak tool.
let speakTool = Tool(name: "Speak", emojiIcon: "????")
speakTool.onGraphicTouched = speakText(graphic: )
scene.tools.append(speakTool)
【问题讨论】:
【参考方案1】:speakTool
是Tool
类型,它有一个onGraphicTouched
类型的属性(Graphic) -> ()
,它是一个函数/闭包,它接受Graphic
作为输入并且什么都不返回(Void
或@987654329 @)。
speakText(graphic:)
是指向上面定义的函数的函数指针。请注意,该函数具有所需的签名;它需要 Graphic
并且什么都不返回。
所以speakTool.onGraphicTouched = speakText(graphic: )
将指向函数的指针分配给onGraphicTouched
,当触摸图形时,speakTool
将调用onGraphicTouched(someGraphic)
,而speakText(graphic: someGraphic)
将调用。
您可以在Apple's Swift Guide.中的函数类型部分阅读更多相关信息
【讨论】:
谢谢!你知道我可以阅读更多关于这个主题的文档或参考吗? 查看函数类型部分:developer.apple.com/library/content/documentation/Swift/…以上是关于如何在不传入值的情况下调用带参数的函数? [迅捷游乐场]的主要内容,如果未能解决你的问题,请参考以下文章
如何在不传递预期参数但使用它已有的参数的情况下调用 sub?
如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 Web api 调用创建模型?
尝试在不指定返回参数的情况下调用存储的函数“dbname”。“functionname”