Double(1)正解はもちろんDouble。1はIntでもDouble()に食わせているのですから,最終的にDoubleになるのはごく自然です。1やはりDoubleです。print(x)してみると,確かに1.0と表示されます。'Double'というエラーを出して止まります。Double("1")とすると......,zには無事,Doubleの1.0が代入されるではありませんか。これはいったいどういうことなのでしょう?「DoubleはIntegerLiteralConvertibleプロトコルに準拠しているが,StringLiteralConvertibleプロトコルには標準では準拠していない」というのが,その答えになります。"1"を受け付けるようにしてみましょう。"1"の前にペーストしてみてください。今度はエラーにならずにdに42.195が代入されています(図2)。Convertibleとは,その型からの暗黙的な変換をサポートしているという意味なのです。IntegerLiteralConveribleなら整数リテラルからの,StringLiteralConvertibleなら文字列リテラルからの,という風に。「暗黙的」というのがポイントです。暗黙的ですので,初期化以外の目的にも使えます。"0.195"はエラーとはならずに,42.195になってしまうのです。便利といえば便利ですが,濫用するとコードがわかりにくくなってしまいます。標準状態ではDoubleはIntegerLiteralConvertibleであっても,StringLiteralConvertibleでないという仕様は,賢明な判断と言えるでしょう。0.195はエラーとなるわけです。Convertibleプロトコルが存在します。LiteralConvertibleにそれぞれ準拠しています。(5938418321153065/140737488355328)という具合に小数で分数を初期化することも可能になっています。="93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000"ちなみにリスト2のbiですが,実は100の階乗です。PONSされた状態であれば,(1...100).reduce(BigInt(1),combine:*)として手軽に生成できます。&#125;.reduce(BigInt(1),combine:*)のように,ひとつひとつのIntを明示的に変換したうえで.reduceしなければならなかったでしょう。フィボナッチ数を計算する総称関数も,リスト3のように書けます。2の2は,IntではなくTなのですが,わざわざT(2)と書く必要はないのです。b&#125;Swiftの'ミステリー'リテラルといえば,記号が欠かせません。mark)で囲まれた部分ですし,{}で囲まれた部分がブロック=関数リテラル,[]で囲まれた部分が添字またはArray/Dictionaryリテラルという具合に。「`(backtick)」ですら「予約語(keyword)を普通の識別子(identifier)として扱う」ための引用符としての役割を担っています。2.2時点では単なる文字にすぎません。将来使われるようになるのでしょうか?そうやって見てみると,あらゆる言語の良いとこ取りをしてきたように見えるSwiftにも,まだまだ一層の発展の余地があるように見えます。なっていくのか,お楽しみはまさにこれからでしょう。Xcode著者プロフィール小飼弾(こがいだん)1969年生まれ,東京都出身。GOのガチトレーナーのほうが有名になりつつある......かもしれない永遠のエンジニアオヤジ。https://twitter.com/dankogai,ニコニコチャンネルは,http://ch.nicovideo.jp/dankogai,blogはhttp://blog.livedoor.jp/dankogai/当社刊行書籍は『小飼弾のアルファギークに逢ってきた』『小飼弾のコードなエッセイ』など。