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