Swift的功能和方法有什么区别?
我一直认为功能和方法是一样的,直到我通过“Swift Programming Language”电子书学习Swift。我发现我不能使用greet(“John”,“Tuesday”)来调用我在一个类中声明的一个函数,如下图所示的电子书中所示:
我收到一个错误,表示“丢失参数标签”日期:“在通话”根据这个屏幕截图: 这是代码: – import Foundation import UIKit class ViewController2: UIViewController { override func viewDidLoad() { super.viewDidLoad() //var dailyStatement = greet("John","Tuesday") var dailyStatement = greet("John",day: "Tuesday") println(dailyStatement) } func greet(name: String,day: String) -> String { return "Hello (name),today is (day)." } } 经过一些研究,我发现这个帖子:Difference between a method and a function,在我看来,我在一个类中声明的函数实际上被称为一个方法。所以我用来调用该方法的语法与我用来调用函数的语法不同。 当我在Objective-C中编程时,我从来没有意识到这种差异。 > Swift的功能和方法有什么区别?
经过几个小时的阅读和实验,以下是我发现的事情:
Swift中的功能
资源:Official Apple Documentation on Functions in Swift 功能参数名称
这意味着默认情况下,Function的所有参数都是本地参数。 但是,有时我们想要指出每个参数的目的。所以我们可以为每个参数定义一个外部参数名称。代码示例: func someFunction(externalParameterName localParameterName: Int) { // function body goes here,and can use localParameterName // to refer to the argument value for that parameter } 使外部参数名称的另一种方法是使用哈希符号(#)来缩短名称。 func someFunction(#localParameterName: Int) { // function body goes here,and can use localParameterName // to refer to the argument value for that parameter } 要使用外部参数调用上述函数,可以使用 someFunction(localParameterName:10) Swift方法
资源:Official Apple Documentation on Methods in Swift
下面的代码显示了Swift中方法的默认和非默认参数的差异。 import Foundation import UIKit class ViewController2: UIViewController { override func viewDidLoad() { super.viewDidLoad() //Default methods calling var dailyStatement = greet("Rick",day: "Tuesday") println(dailyStatement) //First parameter is also an external parameter var dailyStatement2 = greet2(name:"John",day: "Sunday") println(dailyStatement2) } //Default: First Parameter is the local parameter,the rest are external parameters func greet (name: String,today is (day)." } //Use Hash symbol to make the First parameter as external parameter func greet2 (#name: String,today is (day)." } } 我可能会想念一些重要的细节。希望有人能提供更好的答案。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |