これまでのリテラル
リテラルは、文字列だとか数値の値のことだと思って大丈夫だと思います。
正確な定義がわかる人がいましたら、コメント欄で教えてもらえると嬉しいです。
基本的なリテラルの表現を以下に挙げます。
文字列リテラル
String型のオブジェクトに格納できる"(クォーツ)で括られた文字列ですね。
let stringLiteral = "これは文字列リテラルです😃"
整数リテラル
Int型のオブジェクトに格納できる数値です。
let intLiteral = 123
データ型を確認すると
のように型推論されて「Int」になります。
実数リテラル
いわゆる浮動小数点数を表現します。
Double型とFloat型があり、それぞれ精度が異なります。
let doubleLiteral = 1.23
型推論をさせると、少数点数リテラルは自動的にDouble型になります。
Float型にしたい場合は、型を明示します。
let floatLiteral: Float = 12.3
新しいリテラル
Xcode8から、リテラルにカラーとイメージを表現できるようになりました。
とても直感的なコードになるので、積極的に使っていきたいところです。
慣れないと、なんか気持ち悪いですが。
カラーリテラル
UIColorクラスの型プロパティを指定する方法ですね。
ビューのバックグラウンドカラーや、ラベルのテキストカラーなどで使用します。
let colorOfSea = UIColor.blue
上記のUIColor
と記述するところで、color literal
と記述してみましょう。
すると、入力補完が作動してColor Literal
が選択できます。
「Color Literal」を選択すると、カラーパネルが表示されるので好きな色を選択しましょう。
ただし、このカラーリテラルはUIKitフレームワークがインポートされている必要があるようです。import UIKit
が記述されていないと...
型が推論できないとうことで、エラーになります。
UIColorクラスを使うことになるので当然ですね。
イメージリテラル
カラーだけでなく、イメージファイル(画像)もリテラルで扱えるようになりました。
このプロジェクトには、「iPhone.png, coffee.png, money.png」を用意しています。
画像などを扱うとき、今まではこのように記述していました。
let iPhone = UIImage(named: "iPhone")
新たに可能になったリテラル表現では、上記UIImage
の部分でimage literal
と入力します。すると、やはり入力補完が作動されるのでImage Literal
を選択します。
パネルにプロジェクトに用意されている画像ファイルが表示されるので、任意の画像を選択します。すると、コード内にサムネイルが表示されて直感的といえば直感的な見た目になります。
データ型を確認すると、もちろんUIImage
になっています。
このリテラルもUIKitに依存しているということですね。
雑感
新しいリテラルは、Xcode8の新機能のわかりやすい部類に入るかと思いますが、バリバリのプログラマにはちょっと見た目が気持ち悪いと感じるかもしれません。使われた画像のファイル名を確認するのもなんか不便です。
私が思うに、この新しいリテラルはSwiftを小・中学生などのより若い世代に親しんでもらうのが目的ではないかと思います。iPadで本格的なSwiftプログラミング環境が整ったことと同じタイミングで、リテラルが増えたのは偶然ではないでしょう。