Swift ライブラリでは次の定義を確認できます。
extension Bool : BooleanLiteralConvertible {
static func convertFromBooleanLiteral(value: Bool) -> Bool
}
protocol BooleanLiteralConvertible {
typealias BooleanLiteralType
class func convertFromBooleanLiteral(value: BooleanLiteralType) -> Self
}
として定義されたメンバー関数static func
と として定義された別のメンバー関数の違いは何class func
ですか? 単に は、static
構造体と列挙型の静的関数用、およびclass
クラスとプロトコル用ですか? 他に知っておくべき違いはありますか? 構文自体にこのような区別がある理由は何ですか?
ベストアンサー1
わかりやすくするために、ここで例を挙げます。
class ClassA {
class func func1() -> String {
return "func1"
}
static func func2() -> String {
return "func2"
}
}
/* same as above
final class func func2() -> String {
return "func2"
}
*/
static func
と同じですfinal class func
なのでfinal
、以下のようにサブクラスでオーバーライドすることはできません。
class ClassB: ClassA {
override class func func1() -> String {
return "func1 in ClassB"
}
// ERROR: Class method overrides a 'final` class method
override static func func2() -> String {
return "func2 in ClassB"
}
}