Swift - 使构造函数参数上的标签可选吗?

Cap*_*rge 7 constructor swift

比方说,您可以使用以下代码:

struct SomeStruct {
     init (arg1: String, arg2: Int){
          // Does Stuff with Variables
     }
}

// Some Point Later

var str = "fasfsad"
var integer = 343
let smth = SomeStruct(arg1: str, arg2: integer)
Run Code Online (Sandbox Code Playgroud)

是否可以修改SomeStruct结构以使以下代码行合法?

let smth = SomeStruct(str, integer)
Run Code Online (Sandbox Code Playgroud)

Nat*_*ook 7

是的,您可以通过对外部参数名称使用下划线来使参数匿名:

struct SomeStruct {
     init (_ arg1: String, _ arg2: Int){
          // Does Stuff with Variables
     }
}
Run Code Online (Sandbox Code Playgroud)

  • 正确,但要在原始问题的措辞上分开:这不会在呼叫站点上使参数标签*可选* - 它要求呼叫者省略它们.函数/初始化器声明只指定一种用于调用它的语法.如果要为呼叫者提供多个选项,请声明多个初始化器. (3认同)
  • 那是个很好的观点.如果以这种方式定义初始化程序,`SomeStruct(arg1:str,arg2:integer)`不再是有效的调用. (2认同)