Swiftで色やフォントを管理するのにはenumを使うのが大変便利ですよね。次の例は流石に雑ですが、だいたいこんな感じで管理してると思います。
import UIKit enum Colors { case black case white func color() -> UIColor { switch self { case black: return UIColor.blackColor() case white: return UIColor.whiteColor() } } } Colors.black.color()
これをPlaygroundで実行するとこうなる
まぁそりゃそうだって感じなんですが、UIColor.blackColor()
と書いている部分を.blackColor()
にする事ができます。
import UIKit enum Colors { case black case white func color() -> UIColor { switch self { case black: return .blackColor() case white: return .whiteColor() } } } Colors.black.color()
で、これを実行すると
ちゃんと黒が返ってくる。それじゃあblackColor:
というメソッドを生やしたらどうなるんでしょうか?
import UIKit enum Colors { case black case white func color() -> UIColor { switch self { case black: return .blackColor() case white: return .whiteColor() } } func blackColor() -> UIColor { return .redColor() } } Colors.black.color()
新しくblackColor:
を作りました。実行してみると
黒が返ってきますね。じゃあこのblackColor:
を実行するにはどうすればよいかというと
import UIKit enum Colors { case black case white func color() -> UIColor { switch self { case black: return self.blackColor() case white: return .whiteColor() } } func blackColor() -> UIColor { return .redColor() } } Colors.black.color()
self.
で呼んであげれば良いです。
ちゃんと赤が返ってきてますね。
ちなみに
enumじゃなくても使えたわ。
追記
@FromAtom selfつけんくても`.`をとればいけるのでは?
— やしがに (@yashigani) 2015, 12月 16
return blackColor()
でいけました。