【发布时间】:2014-09-29 03:38:51
【问题描述】:
我可以在 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 用于类和协议吗?是否还有其他需要了解的差异?在语法本身中有这种区别的基本原理是什么?
【问题讨论】:
-
真的没有区别。我猜他们不能在结构中使用类func,因此是静态函数。 struct func 本来是一个不错的选择。如果你问我,这有点前卫,但好吧,就是这些话。
-
奖励问题,然后:一个结构可以符合定义
class func的协议吗?根据我们现在掌握的信息,这种区分似乎没什么用,不是吗? -
是的,你可以。是不是很奇怪?
-
最大的不同是你可以覆盖
class funcs -
待考虑:
error: class methods are only allowed within classes; use 'static' to declare a static method