Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Constructor Swift-使构造函数参数上的标签可选?_Constructor_Swift - Fatal编程技术网

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

Constructor Swift-使构造函数参数上的标签可选?,constructor,swift,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) 是否可以修改SomeStruct结构以使以下代码

比如说,您有以下代码:

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)
是否可以修改SomeStruct结构以使以下代码行合法

let smth = SomeStruct(str, integer)

是的,您可以使用下划线作为外部参数名称使参数匿名:

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

以下是如何做到这一点:

struct A {
    var a: String
    var b: String

    init(_ a: String,_ b: String) {
        self.a = a
        self.b = b
    }
}

var x = A("S", "B")

正确,但要对原始问题的措辞进行梳理:这并没有使参数标签在调用站点上成为可选的,而是要求调用方省略它们。函数/初始值设定项声明只指定一种用于调用它的语法。如果您想为调用者提供多个选项,请声明多个初始值设定项。这是一个很好的观点。如果以这种方式定义初始值设定项,
SomeStruct(arg1:str,arg2:integer)
不再是有效的调用。