我一直以为功能和方法是相同的,直到我通过“ Swift编程语言”电子书学习Swift 之前。我发现我
不能greet(“John”, “Tuesday”)用来调用在类中声明的函数,
Here is the code:-
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)."
}
}
当我在Objective-C中编程时,我从未意识到这种差异。
Swift中的函数和方法之间有什么区别?
在Swift中什么时候使用函数以及何时使用方法?
经过几个小时的阅读和实验,以下是我发现的内容:
Swift中的函数
函数是执行特定任务的独立代码块。您为函数指定一个名称,该名称可以标识其功能,该名称为“调用”该函数以在需要时执行其任务。
资源
:有关Swift中功能的Apple官方文档
功能参数名称
但是,这些参数名称仅在函数本身的主体内使用,而在调用函数时不能使用。这些类型的参数名称称为局部参数名称,因为它们仅可在函数体内使用。
这意味着默认情况下,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中的方法
Methods are functions that are associated with a particular type. Classes,
structures, and enumerations can all define instance methods, which
encapsulate specific tasks and functionality for working with an instance of
a given type.
Resource : Official Apple Documentation on Methods in
Swift
However, the default behavior of local names and external names is different
for functions and methods.Specifically, Swift gives the first parameter name in a method a local
parameter name by default , and gives the second and subsequent parameter
names both local and external parameter names by default.
Code below shows the differences for default and non-default parameters for
method in 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)."
}
}
I might miss some important details. Hope someone can provide a better answer.
问题内容: 我一直在阅读iBooks中的快速编程指南。有人可以向我解释函数和闭包之间的区别是什么。只是它没有名称并且可以在表达式中使用? 问题答案: 函数实际上只是命名为闭包。以下至少在概念上是等效的: 在使用声明方法的情况下,这变得有些复杂,例如,关于自动插入公共命名参数等,添加了一些有趣的糖,例如,变为`func myMethod(foo:Int, #bar:Int, 但是,即使方法只是闭包的
问题内容: OpenAI的强化学习的REINFORCE和actor-critic示例具有以下代码: 加强: 演员评论家: 一种正在使用,另一种正在使用。 据我所知,文档没有对它们之间进行任何明确的区分。 我很高兴知道这些功能之间的区别。 问题答案: 沿着 新的维度 连接张量序列。 在给 定维度上 连接给定序列张量的序列。 因此,如果和具有形状(3,4),则将具有形状(6,4),并将具有形状(2,3
问题内容: 有人可以在OOP上下文中提供方法与功能的简单说明吗? 问题答案: 甲函数是一段代码由名字叫做。可以传递数据以对其进行操作(即参数),还可以选择返回数据(返回值)。传递给函数的所有数据都被显式传递。 甲方法是一段代码,由与对象相关联的名称叫。在大多数方面,它与功能相同,但有两个主要区别: 方法被隐式传递给调用该方法的对象。 方法能够对类中包含的数据进行操作(记住,对象是类的实例-类是定义
问题内容: 我可以在Swift库中看到这些定义: 定义为的成员函数与定义为的另一个成员函数有什么区别?仅仅是为了结构和枚举的静态功能,以及用于类和协议吗?还有其他应该知道的区别吗?在语法本身中具有这种区别的原理是什么? 问题答案: 是否仅将static用于结构和枚举的静态函数,将class用于类和协议? 那是主要区别。其他一些区别是类函数是动态调度的,并且可以被子类覆盖。 协议使用class关键字
我可以在Swift库中看到这些定义: 定义为的成员函数和定义为的成员函数之间有什么区别?简单地说,是用于结构和枚举的静态函数,而是用于类和协议吗?还有什么其他的不同之处是你应该知道的吗?语法本身有这种区别的理由是什么?
问题内容: 我正在制作一个简单,非常轻便的前控制器。我需要将请求路径匹配到不同的处理程序(操作),以便选择正确的处理程序。 在我的本地计算机上并返回相同的结果。但是我不确定他们将在生产环境中返回什么。 那么,这些方法有什么区别,我应该选择什么? 问题答案: 给出URI后面的额外路径信息,用于访问Servlet,其中给出完整的URI。 我本以为它们会有所不同,因为首先必须为Servlet配置自己的U