The Swift Proggraming Languageに目を通しました。
※「読みました」とは敢えて言わない![]()
この時点で印象に残った点をメモ。
定数はlet文で宣言する
BASICでは変数に右辺を代入する命令がLETでした。定数というとconstが思い浮かびます。#defineと違って、”書き換わるはずのない変数”のようなニュアンスです。varと同じ3文字なので、積極的に使い分けようという気分にさせてくれます![]()
文末のセミコロンは要らない
C入門以来ずっとセミコロンが有ったので、しばらくは慣れないかも。javascriptも要らないんでしたっけ…私は無いと気持ち悪いので付けていましたけども。Swiftは”付けたければ付けてもいい”ようですが、郷に従うこととします。
型指定はコロン、しかも変数名のうしろ
私はPerlで怠けていた期間が長いので、データ型に対してとてもルーズになっています。Swiftも多少は自動的に解釈されるようですが、キャストまではしてくれないので、C時代の初心を取り戻さねばなりません![]()
nilは、Objective-Cのnilと違う
Objective-Cでは”どのオブジェクトも指し示していないポインタ”というような意味でしたが、Swiftでは”値でない状態”といった意味合いで、Perlで言うundefの方に近いようです。
optional
値でない状態(nil)の扱いと関係しているようですがよくわかりません。扱えないのがデフォルトで、扱えるのがオプショナル(任意)なのには意味があるのでしょうね。
クロージャ
聞いたことはあるけど中身までは知らない、という言葉です。うーん…関数から関数へ処理が移るときに、ポインタとかを使わなくてもスマートに書けるよという事でしょうか…。変数のスコープがミソのようです。
generics
ある関数をどのデータ型にも使えるようにする、一般化する、といったところでしょうか。これもゆるゆるのPerlからすると、大変ですねぇ…。
tuple
Perlではサブルーチンから複数の値を返したい時に、名無しのリストをそのまま返してしまいますが、それとそっくりに見えます。localtime関数の戻り値とか。
subscript
クラスなどのパラメータに対して、シンプルにアクセスする仕組み?関数の一種のようです。
その他、些細なこと
変数名はUnicode文字であれば何でも使える
漢字も絵文字も使えるようですが、多分使わないので、豆知識ですね。
データ型に別名を付けられる
typealias文を使う。
if文の条件式に()がない
括弧の省略はPerlの方がひどいので
どうってことありません。
switch文のbreakが要らない
よいと思います!
今を登山に例えると、これから登る山の写真を見た、ってところでしょうか。
はぁ・・・![]()
次は書籍のほうに取り組みます。