Help us understand the problem. What is going on with this article?

【Xcode8】色と画像を表現する新しいリテラル

More than 3 years have passed since last update.

これまでのリテラル

リテラルは、文字列だとか数値の値のことだと思って大丈夫だと思います。
正確な定義がわかる人がいましたら、コメント欄で教えてもらえると嬉しいです。
基本的なリテラルの表現を以下に挙げます。

文字列リテラル

String型のオブジェクトに格納できる"(クォーツ)で括られた文字列ですね。

文字列リテラル
let stringLiteral = "これは文字列リテラルです😃"

整数リテラル

Int型のオブジェクトに格納できる数値です。

整数リテラル
let intLiteral = 123

データ型を確認すると
のように型推論されて「Int」になります。

実数リテラル

いわゆる浮動小数点数を表現します。
Double型とFloat型があり、それぞれ精度が異なります。

実数リテラル(Double型)
let doubleLiteral = 1.23

型推論をさせると、少数点数リテラルは自動的にDouble型になります。
Float型にしたい場合は、型を明示します。

実数リテラル(Float型)
let floatLiteral: Float = 12.3

新しいリテラル

Xcode8から、リテラルにカラーとイメージを表現できるようになりました。
とても直感的なコードになるので、積極的に使っていきたいところです。
慣れないと、なんか気持ち悪いですが。

カラーリテラル

UIColorクラスの型プロパティを指定する方法ですね。
ビューのバックグラウンドカラーや、ラベルのテキストカラーなどで使用します。

今までの記述方法
let colorOfSea = UIColor.blue

上記のUIColor と記述するところで、color literal と記述してみましょう。
すると、入力補完が作動してColor Literal が選択できます。
スクリーンショット 2016-09-23 13.06.58.png

「Color Literal」を選択すると、カラーパネルが表示されるので好きな色を選択しましょう。
スクリーンショット 2016-09-23 13.07.05.png

型を確認するとUIColor になっています。
スクリーンショット 2016-09-23 13.10.21.png

ただし、このカラーリテラルはUIKitフレームワークがインポートされている必要があるようです。import UIKit が記述されていないと...
スクリーンショット 2016-09-23 13.07.22.png
型が推論できないとうことで、エラーになります。
UIColorクラスを使うことになるので当然ですね。

イメージリテラル

カラーだけでなく、イメージファイル(画像)もリテラルで扱えるようになりました。
このプロジェクトには、「iPhone.png, coffee.png, money.png」を用意しています。
スクリーンショット 2016-09-23 13.03.36.png

画像などを扱うとき、今まではこのように記述していました。

今までの記述方法(画像)
let iPhone = UIImage(named: "iPhone")

新たに可能になったリテラル表現では、上記UIImage の部分でimage literalと入力します。すると、やはり入力補完が作動されるのでImage Literal を選択します。

スクリーンショット 2016-09-23 13.28.16.png

パネルにプロジェクトに用意されている画像ファイルが表示されるので、任意の画像を選択します。すると、コード内にサムネイルが表示されて直感的といえば直感的な見た目になります。
スクリーンショット 2016-09-23 13.32.33.png

データ型を確認すると、もちろんUIImage になっています。
スクリーンショット 2016-09-23 13.34.51.png
このリテラルもUIKitに依存しているということですね。

雑感

新しいリテラルは、Xcode8の新機能のわかりやすい部類に入るかと思いますが、バリバリのプログラマにはちょっと見た目が気持ち悪いと感じるかもしれません。使われた画像のファイル名を確認するのもなんか不便です。
私が思うに、この新しいリテラルはSwiftを小・中学生などのより若い世代に親しんでもらうのが目的ではないかと思います。iPadで本格的なSwiftプログラミング環境が整ったことと同じタイミングで、リテラルが増えたのは偶然ではないでしょう。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away