为什么我们在swift函数调用期间需要参数标签

时间:2016-08-09 17:27:44

标签: swift

我刚开始阅读Swift的Learn Essentials

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

要调用的语法

  greet("Anna",day : "Tuesday")

我的问题:

  1. 发送参数名称的真正需要是什么
  2. 在复制函数
  3. 中的值之前,它是否与名称匹配
  4. 如果它与名称匹配,如果我在调用函数时交换值,则代码失败

     func greet(name: String, day: String,time: String) -> String
     {
        return "Hello \(name), today is \(day), \(time)."
     }  
    greet("Anna", time: "one forty",day: "Tuesday")
    
  5. 函数参数机制如何在内部工作?

1 个答案:

答案 0 :(得分:1)

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

然而,在Objective-C中,从一开始就已经命名了参数。更确切地说,它们类似于命名参数,因为名称是方法名称(选择器)的一部分。在您的示例中,Objective-C中的方法是:greetName:day:。这与greetName:day:time:不同。至少Swift需要具备处理它的能力。

  

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

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

  

在复制函数

中的值之前,它是否与名称匹配

是。它从调用中的参数名称构建函数名称,并尝试将其与潜在方法的参数名称匹配。

  

如果它与名称匹配,如果我在调用函数时交换值,则代码失败

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