だいたいそれでいいんじゃないの

つれつれなるkixixixixiの技術的なストック。http://reload.co.jp

SwiftでのLiteralTypeってなんだ!?

きっかけは些細なことでした。
UIView.animateWithDuration( delay: options: animations: completion:)を書いているとき、delayに変数を代入しました。
コンパイルエラーでswiftでがエラーを返します。

!?

animateWithDuration with an argument list of type '(FloatLiteralConvertible, delay: @lvalue CGFloat, ...)'

ふむふむ。よくわからん。
Floatを代入すればいいはずなのですが、リテラルにしろと怒られる。
は!?

var delay:CGFloat = 1.0

これがリテラルじゃないの!?
憤りが隠せませんが、swiftには数値のリテラルな表記というものがないという。
リテラルってなんだっけ?

コンピュータプログラムのソースコードなどで、特定のデータ型による値を直接表記する際の書式。また、そのような書式に従って記載された値。
http://e-words.jp/w/E383AAE38386E383A9E383AB.html

リテラルに書いているように見えるけど、Swiftではダメらしい。
floatにもdoubleにもintにもなれるから?とかいう。

しかたないので無理やりにリテラルにしてやる。

FloatLiteralType(delay)

これでコンパイルが通ります。

根本的には理解できてないですが、これで問題は解決しますので。

以上!