2023年2月19日Motokoプログラミング1の続きである。自力で一からプログラミングを学ぶよりも、サンプルを動かした方が楽である。https://github.com/dfinity/examplesに様々なサンプルがあるようなので、これに挑戦してみる。個別のサンプルごとではなく、すべてをひとまとめのリポジトリなので、一度だけcloneする。https://github.com/dfinity/examples.gitexamplesというフォルダができているので、その下のmotokoの下の各サンプルについて見ていく。あまりに単純なものについては省略。目次simple-to-doオプションブロックとヌルブレークsimple-to-do単純なTO-DO管理である。入力した文言に番号をつけ、ハッシュテーブルに格納しておき、すべてを表示したり、番号を指定して「済」マークをつけ、済のものを削除したりする。これを起動すると、次のようなバックエンドのUIが表示できる。一般ユーザ向けのフロントエンドは無いようだ。VSCode+Motokoプラグインの機能により、ライブラリ定義等をすぐに表示させることができる。調べたい場所を右クリックして「定義に移動」する。“mo:base/Hash”;)のHash型を調べている。以下で、このプログラムが何をしているのかコメントをつけてみる。自然数をテキスト化してハッシュコードを作成して返す。ハッシュテーブルの定義。HashMapはいわゆるクラスであり、オブジェクト指向が使えることがわかる。これはジェネリックであり、Kがキー、Vが値の型を示す。自然数型、二つのキー型の値を入力してBoolを返すfunc、一つのキー型の値を入力してHash.Hashを返すfuncになっている。すべてのToDoを取得する。funcの_は特別な記号ではなく、keyと書いてもよい。無視するために_と書いてあるようだ。};}オプションブロックとヌルブレーク先のプログラム中での「?」の意味としては、例えば、Java言語におけるOptionalの意味と思われる。Java言語が規定された当時には、こういった考えはなかったので、JavaではライブラリとしてOptionalが与えられているが、Motokoでは言語仕様に含まれている。いうものかと言えば、例えば整数値であるべきなのに何の値も無いことをnullで表したりするが、それを扱うプログラムでは整数値を期待するため、NullPointerExceptionが発生してしまう。これを避けるためには、nullかどうかチェックをしなければならないが、nullを扱うより簡便な方法としてOptionalが導入された。詳細はJavaのOptionalを見てほしい。要するに、JavaではOptional<T>というふうに書いていたが、Motokoでは?Tと簡単に書け、なおかつその処理も簡単に書けるようになっている。Motokoのドキュメントには以下のようにある。他の多くの高級言語と同様に、Motokoではnull値を選択することができ、?Tという形式のオプション型を使ってnull値の発生可能性を追跡します。これは、可能な限りnull値を使用しないようにすることと、必要なときにnull値の可能性を考慮することの両方が理由です。後者としては、値がnullかどうかを冗長なswitch式でテストする唯一の方法であれば面倒ですが、Motokoはオプションブロックとnullブレークという専用の構文でオプションタイプの処理を簡素化しています。ブレークの可能性を導入します。結果がnullであるかをテストします。<block>」を値nullで抜けます。現実的な例として、自然数、除算、ゼロテストから構築された数値表現(Variant型としてエンコードされる)を評価する簡単な関数の定義を示します。};}0による除算をトラップせずに防ぐため、eval関数はオプションの結果を返し、失敗した場合はnullを使用します。(オプションブロックの簡潔さを説明する練習として、evalをラベル付きの式で書き直し、nullの区切りごとに明示的にスイッチを入れてみるのもよいでしょう)。後者が0の場合はnullを返す。なければ除算結果を返す。最初の式の値を求めるが、この時点で値無しの場合は抜ける。};}Motokoプログラミング3に続く。...Motokoプログラミング(準備2)Motokoプログラミング(準備1)の続きである。...Motokoプログラミング1Motokoプログラミング(準備2)の続きである。...Motokoプログラミング3Motokoプログラミング2の続きである。...Motokoプログラミング4Motokoプログラミング3の続きである。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。