Swiftでクラス定数を宣言するときはstatic letを使うのが基本だと思う。
class User {
static let nameMaxLength = 10
var name: String
}
でも、こうするとインスタンスメソッド(static funcでないもの)からは、いちいちtype(of: self)しないとアクセスできない。
if self.name > type(of: self).nameMaxLength {
// Do something.
}
これがめんどう。インスタンスメソッドでしか使わないならstatic letではなく、ただのletにしてしまう手もある。
class User {
let nameMaxLength = 10
しかし、クラスメソッド(static func)からアクセス出来ないので困ることもある。そこでfileprivateをclassの外で宣言してしまうのも手である。
fileprivate let nameMaxLength = 10
class User {
var name: String
}
これだとインスタンスメソッド、クラスメソッド両方から単にnameMaxLengthとしてアクセスできる。ただしfileprivateなので、他のファイルからはアクセス出来ないので注意。
その場合、こうするとか・・・
fileprivate let _nameMaxLength = 10
class User {
static let maxNameLength = _maxNameLength
そこまでtype(of: self)を使いたくないかって話ですが。