我一直认为函数和方法是一样的,直到我通过“Swift编程语言”电子书学习Swift。我发现我不能使用greet(“john”,“tuesday”)
调用我在类中声明的函数,如下面屏幕快照中的电子书所示:
我收到一个错误,说“调用中缺少参数标签'day:'”,根据这个屏幕快照:
代码如下:-
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)."
}
}
经过几个小时的阅读和实验,以下是我发现的事情:-
Swift中的函数
函数是执行特定任务的自包含代码块。您给一个函数一个名称来标识它的功能,这个名称用于在需要时“调用”该函数来执行它的任务。
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中的方法
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, day: String) -> String {
return "Hello \(name), today is \(day)."
}
//Use Hash symbol to make the First parameter as external parameter
func greet2 (#name: String, day: String) -> String {
return "Hello \(name), today is \(day)."
}
}
我可能会错过一些重要的细节。希望有人能提供更好的答案。
问题内容: 我正在尝试开始使用Go,并且文档非常好。我在文档中找不到的是函数和方法之间的区别。 据我目前的了解:函数是“全局”的,这意味着我不必导入包即可使用函数,它们始终存在。方法绑定到包。这样对吗? 问题答案: 据我目前的了解:函数是“全局”的,这意味着我不必导入包即可使用函数,它们始终存在。方法绑定到包。这样对吗? 不,那是不正确的。内置软件包中只有几个功能始终可用。其他所有内容都需要导入。
问题内容: 我一直以为功能和方法是相同的,直到我通过“ Swift编程语言”电子书学习Swift 之前。我发现我 不能greet(“John”, “Tuesday”)用来调用在类中声明的函数, Here is the code:- 当我在Objective-C中编程时,我从未意识到这种差异。 Swift中的函数和方法之间有什么区别? 在Swift中什么时候使用函数以及何时使用方法? 问题答案: 经
问题内容: 例: 第一个参数采用Double并将其保存在该方法范围中。但是,什么是和? 我阅读了这篇文章,却找不到任何相关内容:https : //developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html 问题答案: 这就是Swift模仿目标C的命名参
问题内容: 我知道虚函数具有取消引用调用方法的开销。但是我想以现代建筑的速度几乎可以忽略不计。 为什么C ++中的所有函数都不像Java中的虚拟函数那样有特定的原因? 据我所知,在基类中定义虚拟函数是足够/必要的。现在,当我编写父类时,我可能不知道哪些方法会被覆盖。这是否意味着在编写子类时,有人必须编辑父类。这听起来不方便,有时甚至不可能? 更新: 以下是乔恩·斯凯特(Jon Skeet)的回答:
我在读关于不可变类的书,而使类不可变的方法据说是: 1-使类成为最终类以防止继承 我认为第三个条件是不必要的。当我们使一个变量最终并为它提供任何值时,在那之后,即使通过方法也不能给它赋值(因为一旦赋值给它,最终变量就不能改变)。那么为什么我们需要第三个条件没有setter方法呢? 我是不是理解错了?
我使用lambda函数中的functional方法实现了函数接口。所有的工作都很好,只是我遇到了一个错误,即必须实现这个继承的抽象方法(在我的例子中是函数方法)。现在我很困惑。我使用lambda函数实现了这个函数方法,为什么我要再次实现这个方法。函数方法的实现是如何正确完成的?我的代码: 谢谢你的帮助。:)