Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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
为什么在swift中调用函数时需要参数标签_Swift - Fatal编程技术网

为什么在swift中调用函数时需要参数标签

为什么在swift中调用函数时需要参数标签,swift,Swift,我刚刚开始阅读Swift的学习要领 func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)." } 要调用的语法 greet("Anna",day : "Tuesday") 我的问题是: 发送参数名称的真正需要是什么 在复制函数中的值之前,它是否与名称匹配 如果它与名称匹配,如果在调用函数时交换值,下面的代码将失败 func greet(name: St

我刚刚开始阅读Swift的学习要领

func greet(name: String, day: String) -> String {
   return "Hello \(name), today is \(day)."
}
要调用的语法

  greet("Anna",day : "Tuesday")
我的问题是:

  • 发送参数名称的真正需要是什么
  • 在复制函数中的值之前,它是否与名称匹配
  • 如果它与名称匹配,如果在调用函数时交换值,下面的代码将失败

     func greet(name: String, day: String,time: String) -> String
     {
        return "Hello \(name), today is \(day), \(time)."
     }  
    greet("Anna", time: "one forty",day: "Tuesday")
    

  • 函数参数机制在内部是如何工作的?

    正如您在注释中的链接中所发现的,命名参数有一些优点:它们使代码更清晰

    然而,在Objective-C中,从一开始就有命名参数。老实说,它们类似于命名参数,因为名称是方法名(选择器)的一部分。在您的示例中,Objective-C中的方法是:
    greetName:day:
    。这与
    greetName:day:time:
    不同。至少斯威夫特需要处理这一问题的能力

    发送参数名称的真正需要是什么

    名称参数使代码更具可读性。可以有许多具有不同参数名称的方法

    在复制函数中的值之前,它是否与名称匹配

    对。它从调用中的参数名生成函数名,并尝试将其与潜在方法的参数名匹配

    如果它与名称匹配,如果在调用函数时交换值,下面的代码将失败

     func greet(name: String, day: String,time: String) -> String
     {
        return "Hello \(name), today is \(day), \(time)."
     }  
    greet("Anna", time: "one forty",day: "Tuesday")
    

    在Objective-C和Swift中,命名参数的顺序很重要。您可以有两个名称互换的不同方法
    greetName:day:time:
    不同于
    greetName:time:day:

    在内部,编译器为函数生成唯一的名称。看见