[Sy] Swift入門(2) 〜 識別子
2014/10/07
Swift のリファレンスをちょっとずつ読んでのまとめ第2回です。今回は 識別子 について。
(前回の記事はこちら)
その前に識別子とは?
そもそも識別子って何なのか?ですが、変数や関数(メソッド)やクラスなどを識別するために付けられた名前 のことです。
Swiftで識別子に使える文字
Swiftでは、以下の文字を識別子に使えます。
- 英数字(
a-z
,A-Z
,0-9
) - アンダースコア(
_
) $
記号- Unicode文字
Unicode文字が使えるので、日本語はもちろん、絵文字も使えちゃいます。
なので、こんなことも。
この例だと、println(犬)
では3
が、println(cat.voice)
では"にゃー"
が出力されます。使う人いないだろうけど。
・・・でもちょっとかわいいじゃないか。にゃー。
識別子のルール
識別子には、以下のルールが適用されます。
- 数字は1文字目に使ってはいけない。
- 予約語と同じ名前を使いたい場合は、バッククォートで囲む必要がある。
- アルファベットの大文字と小文字は区別される。
- クロージャの仮引数名を省略した場合、プレースホルダとして
$0
,$1
, …が使える。
これらのルールを踏まえると、例えばこんな変数はOK。
var a = "xxx"
var A = "yyy" // a と A は区別されるので重複しない
var a0 = 3 // 2文字目以降なら数字使っていい
var `class` = "aaa" // classは予約後だけど、バッククォートで囲めばOK
var _a = 1 // アンダースコアも使える
var `_` = "bbb" // アンダースコアのみもいけるけど、バッククォート必須
var __ = 10 // アンダースコア1文字じゃなければバッククォートいらないみたい
var $a = 6 // $記号+アルファベットはOK
var あ = 8 // 日本語もOK
逆に、ダメなのはこういう場合
var _ = "bbb" // アンダースコアのみの場合はだめ
var $0 = "yyy" // $記号+数字はこうやって自分で定義はできないみたい
var 0a = 3 // 1文字目に数字を使うとだめ
あと、バッククォートで囲んだ場合もそうでない場合も、同じ識別子として処理されるようです。
var a = "xxx"
println(`a`) // "xxx"が出力される
var `b` = "yyy"
println(b) // "yyy"が出力される
当然、これはだめでした。
var `class` = "aaa"
println(class) // エラーになる。classは予約語なのでバッククォート必須
※クロージャについては、また別の記事で。