method
8003 ワード
方法
まず名前を整理し、関数もメソッドもFuncキーワードを使います.
func someFunc{
//some code
}
class someClass{
func someMethod{
//some code
}
}
関数を使用すると、グローバル機能でもゾーン機能でも独立した機能を実行できます.メソッドがクラス、構造、列挙で使用される場合は、関数ではありません.
メソッドと呼びます.
ふんふん、これを方法と言いますが、方法の特徴は何ですか.
メソッドの特徴
方法はまず2つに分けることができる.
1つはインスタンスメソッドです
もう1つはタイプメソッドです.
Instance Method
class someClass{
func someMethod{
//some code
}
}
インスタンスメソッドは、インスタンスに関連するメソッドです.インスタンスを生成してこそ呼び出すことができます.
上記の例に示すように、一般的に使用される方法は、実例方法である.
呼び出すために、以下のようにします.
let some: someClass = someClass()
some.someMethod()
整理する
通常、我々が使用するFunc宣言はインスタンスメソッドと呼ばれ、インスタンスを作成してこそ呼び出すことができます.
Type Method
タイプに関するメソッドは、タイプが分かれば呼び出すことができ、インスタンスを作成する必要はありません.
メソッド宣言ではstaticキーまたはclassキーを使用して宣言できます.
class SomeClass {
static func someTypeMethod() {
}
class func someOverridableTypeMethod() {
}
}
サンプルコードなどのstaticとclassを貼り付けて宣言します.SomeClass.someTypeMethod()
SomeClass.someOverridableTypeMethod()
インスタンスは作成されません.(dot)を使用して直接呼び出すことができます.Static VS Class
では、タイプメソッドを宣言する場合、StaticとClassの違いは何でしょうか.
class SomeChildClass: SomeClass {
override static func someTypeMethod() {
// compile error
}
override class func someOverridableTypeMethod() {
// OK
}
}
上記の例のように、違いがあるかどうかを上書きできます.タイプメソッドとインスタンスメソッドのアクセス範囲
class someWater {
let name = "TamSaaSoo" // 저장 프로퍼티
static let alias = "SamDasoo" // 저장 타입 프로퍼티
static func sayHello() {
print(name) // error!
print(alias)
}
}
クラスにnameという名前のストレージタイプpropertyとaliasという名前のストレージタイプpropertyがある場合、タイプメソッドでインスタンスpropertyを呼び出そうとするとエラーが発生します.どうしてこんなことになったの?
インスタンスを作成しないとアクセスできないプログラムなので、アクセスできません.
タイプpropertyは、タイプメソッドと同様に、最初からインスタンスを作成する必要がないため、エラーはありません.
class someWater {
let name = "TamSaaSoo"
static let alias = "SamDasoo"
func sayHello() {
print(name)
print(someWater.alias)
}
}
また、インスタンスメソッドでタイプpropertyを呼び出す場合は、タイプ名を知ることでアクセスでき、「name」propertyと「alias」タイプストレージpropertyを同時に呼び出すことができます.ソース:
https://babbab2.tistory.com/122
https://zeddios.tistory.com/233
https://stackoverflow.com/questions/24133879/what-are-the-differences-between-functions-and-methods-in-swift
Reference
この問題について(method), 我々は、より多くの情報をここで見つけました https://velog.io/@mytrace/methodテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol