どうせあとでやるなら…とenum
のcaseの名前を lower-camel-case に書き換えているのですが、ひとつ困ったことが。
実行環境
- Xcode 8 beta (Swift3.0 preview-1)
※情報は変わることがあります。
Swift3.0のガイドラインに合わせてenumのcaseを lower camel case に変えていく
今までは、
// 公開ステータス
enum Status {
case Private // 非公開
case Public // 公開
}
のように、Public
,Private
と書いていたのを、Swift3.0の書き方に倣うと、
// ※これはSwift3.0 preview-1の時点では正しくないコードです
// 公開ステータス
enum Status {
case private // 非公開
case public // 公開
}
となるのですが、private
、public
は 予約語 だから使えないよーって怒られます。
予約語でなければこの問題には直面しないかと思います。default
やrepeat
も同様にアウトですね。
調べたところ、swift-evolutionのAllow (most) keywords in member referencesという提案が Accepted になっているので、もしかしたら普通に使えるようになるのかもしれないですが、現状はできないです。
ここだけ大文字にするとSwift3.0の世界に変わった時に違和感を感じそうだから、次の2通りのパターンを考えました。
“_” を付ける
// 公開ステータス
enum Status {
case _private // 非公開
case _public // 公開
}
一応小文字の体裁は守られていますが、
let status = Status._private
となるのでちょっとなーって感じですね。
``で囲む
これは以前からあった方法みたい?です。
// 公開ステータス
enum Status {
case `private` // 非公開
case `public` // 公開
}
こんな感じにしてあげると、
let status = Status.`private`
こんな感じで使えますがやはり微妙な気も…。
まとめ
現状小文字で書き換える時に、予約語と被る場合は、いずれかの手段を講じるか、諦めて大文字のまま残すかしかなさそうです。
提案自体はAcceptされているので、どこまでのkeywordがallowになるか分からないですが、public
、private
が使えることを願って待つのみです。