gpt4 book ai didi

swift - 是否可以使用不用作参数的参数?

转载 作者:行者123 更新时间:2023-11-28 11:27:14 25 4
gpt4 key购买 nike

例如,我有 func test(paramA: String){}

有时我想传递一个string作为参数,但其他时候,我根本不想有一个参数,而是:test()

是否可以同时调用 test()test("hello") 还是需要不同的函数?

另外,我不确定这是否是特定的名称。 SO 将可选参数定义为:

An optional parameter is one that a caller can include in a call to a function or method, but doesn't have to. When omitted, a default value is used instead. Optional parameters are useful when the default value is used in most cases, but still needs to be specified on occasion.

对我来说,使用 Swift,可选意味着使用 ? 来引用它可能是 nil

编辑感谢您的回复。很明显我应该使用默认参数。但是,在 closure 中这样做会导致以下错误:

"Default argument not permitted in a tuple type"

func characterIsMoving(i: Int, j: Int, completion: @escaping(_ moveWasWithinLimit: Bool, _ test: Bool = false ) -> Void) { ... }

如果有帮助,这里是完整的功能:

func characterIsMoving(i: Int, j: Int, completion: @escaping(_ moveWasWithinLimit: Bool, _ test: Bool = false ) -> Void) {
if !gameBoardArray[i][j].isAccessibilityElement {
print("Not Accessible")
currentSelectedTile = character.getCurrentPosition()

return
}else {
print("Moving")
var moveWasWithinLimit: Bool

if(characterMoveLimit.contains(currentSelectedTile)){
print("Within Limit")
previousSelectedTile.fillColor = SKColor.gray
currentSelectedTile.fillColor = SKColor.brown
placeCharacter(row: i, col: j)
buttonIsAvailable = false

for moveRadius in characterMoveLimit {
moveRadius.fillColor = SKColor.gray
}
characterMoveLimit.removeAll()
moveLimit(limitWho: "CHARACTER", characterOrEnemy: character, i: i, j: j)

moveWasWithinLimit = true
completion(moveWasWithinLimit)
}else{
print("Outside Move Limit")
currentSelectedTile = previousSelectedTile
moveWasWithinLimit = false
completion(moveWasWithinLimit)
}
}
}

最佳答案

您(每个人,真的)会真的从阅读中受益 the Swift book , 从头到尾。

您要查找的内容称为默认值。

func test(paramA: String = "Your default value here") {}

func test(paramA: String? = nil) {}

前者更简单,但限制更多。例如,您无法区分使用了默认值 "Your default value here",或者调用者是否传入了他们自己的值,恰好是 "Your default value here ")。根据我的经验,很少需要进行区分,但最好还是指出以防万一。

在后一种情况下,您可以灵活地以更多方式处理可选。您可以用 ?? 替换默认值,进行条件绑定(bind),map 等等。

关于swift - 是否可以使用不用作参数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57844600/

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