技術,プログラミング言語Flutterを始めてみましたが、コードはDart言語で書きます。いう訳で、Dart言語のツアーを見て勉強しながら、自分用にメモをまとめてみました。features.https://dart.dev/guides/language/language-tour前回分は以下から。Dartツアー(7)ライブラリと可視性、非同期サポートFlutterを始めてみましたが、コードはDart言語で書きます。...https://www.awagumo.net/tech-dart-tour-7/ジェネレータ一連の値をだらだらと生成する必要がある場合、ジェネレータ関数の使用を検討する。Dartは2種類のジェネレータ関数を内蔵している。同期式ジェネレータ:Iterableオブジェクトを返す非同期ジェネレータ:Streamオブジェクトを返す同期ジェネレータ関数を実装するには、関数本体をsync*とマークし、yieldステートメントで値を送出する。非同期ジェネレータ関数を実装するには、関数本体をasync*としてマークし、yieldステートメントを使用して値を送出する。ジェネレータが再帰的な場合、yield*を使用することでパフォーマンスを向上させることができる。コメントなんらかのデータ列を生成する機能です。テストなんかに便利そうです。呼び出し可能クラスDartクラスのインスタンスを関数のように呼び出せるようにするには、call()メソッドを実装する。つの文字列を受け取り、それぞれをスペースで区切って連結し他ものに感嘆符を追加する。コメントサンプルだけだと普通に関数書けば良いじゃん、となるのでメリットが不明瞭。ツアーというからには、もうちょっと「こういう使い方するんだ!」的なものを期待してしまいますが、ツアー全般であまりそういうのはなかったりします。callの使い方として、nullableなクラスでFoo?.call()みたいな書き方ができるという話を見かけました。イベントハンドラで多用するようです。アイソレートモバイルを含め、ほとんどのコンピュータはマルチコアのCPUを搭載している。これらのコアをすべて活用するために、開発者は従来、共有メモリのスレッドを同時に走らせる方法をとっていた。共有状態の同時実行はエラーが発生しやすく、複雑なコードになる可能性がある。スレッドの代わりに、すべてのDartコードはアイソレート内部で実行される。アイソレートは実行の単一スレッドを持ち、他のアイソレートと変更可能なオブジェクトを共有しない。詳しくは以下の各項を参照。サイトのクックブック:バックグラウンド解析Isolateサンプルアプリコメントいわゆるスレッドとか、並列処理のための仕組み。Go言語で言えばgoルーチン。スクリプト言語的に使う分にはあまり意識しませんが、アプリを作る際には意識が必要な部分になります。型の別名(typedef)型の別名(typedefというキーワードで宣言されるためtypedefと呼ばれることが多い)は、型を参照するための簡潔な方法である。いう名前の型エイリアスを宣言して使用する例である。メータを使うこともできる。注:2.13以前は、型定義は関数型に限定されている。新しい型定義を使用するには、少なくとも2.13の言語バージョンが必要。代わりにインライン関数型を使用することを勧める。関数の型定義はまだ役に立つことがある。メタデータメタデータは、コードに関する追加情報を提供するために使用します。メタデータ注釈は@という文字で始まり、その後にコンパイル時の定数(deprecatedなど)への参照、または定数コンストラクタへの呼び出しが続きます。@Deprecated、@deprecated、@overrideの3種である。使用例については、「クラスの拡張」を参照すること。アノテーションを使用した例である。···}コメントこの記述だけでは何が何やらです。ツアーと言いつつ、なんかわかっている人向けの感じです。Javaのアノテーションを知っていることが前提になっています。(自分のJava知識はそれ以前。大雑把なことしか理解していません。)@deprecatedは昔の書き方で、今これを書くとコンパイラに@Deprecated('メッセージ’)に直せと言われます。実質的には@Deprecatedと@overrideの2種を使うべき、となります。@Deprecatedは非推奨コメントを書くために使います。互換性のために残してあるけど将来的には廃止するので使わないでほしいとか、とりあえず実装優先で書いたけど後で直したいとか。@overrideは継承でオーバーライドすることを示すために使います。なくても動作しますが、プログラマの意図を明確にするために、オーバーライドしている際に@overrideがないとコンパイラが注意喚起します。誤って同名の関数を定義してしまったわけではなく、意図してオーバーライドしていることを示すために使うものです。どちらもJavaのアノテーションで同様な意味を持つものです。独自のメタデータアノテーションを定義できる。ここでは、2つの引数を取る@Todoアノテーションを定義する例を示す。メタデータはライブラリ、クラス、typedef、型パラメータ、コンストラクタ、ファクトリ、関数、フィールド、パラメータ、変数宣言の前、およびimportまたはexport指示文の前に表示することができる。リフレクションを使って実行時にメタデータを取得できる。コメントこれも説明不足というか、Javaのアノテーションを知っている前提で書いてあるので、知らないと何が何やらです。7行目までのクラス定義部分は、本来は別ファイルで宣言するライブラリとして使う想定です。何の説明もないですが、複数人で開発している場合に、誰かに何かしてほしい旨をソース中に記述するために使う想定かと思います。上のサンプルの場合、9行目でsethさんにこの部分、いい感じにしといてと伝えるために使っています。これだけならコメントで書けば良いことですが、リフレクションという機能を使ってこの情報を収集できるので、何らかのツールを使ってTodoリストみたいなものをソースから出力できる、はずです。(個人的にはソース中での埋め込み指示はしたことないです。)注釈(アノテーション)ですので、9行目が動作に影響を及ぼすことはありません。上に書いたようにリフレクションという機能を使うと動作に影響を及ぼすことができてしまいます。コメントDartは、単一行コメント、複数行コメント、およびドキュメントコメントをサポートしている。コンパイラによって無視される。/*と*/の間はすべてDartコンパイラによって無視される(そのコメントがドキュメンテーション・コメントである場合を除く。複数行コメントは入れ子にすることができる。*/}ドキュメンテーション・コメントドキュメンテーション・コメントは、///または/**で始まる複数行または1行のコメントである。使用すると、複数行のドキュメンテーション・コメントと同じ効果がある。ドキュメンテーション・コメントの内部では、括弧で囲まれていない限りすべてのテキストが無視される。括弧を使用すると、クラス、メソッド、フィールド、トップレベル変数、関数、パラメータを参照することができる。括弧内の名前は、ドキュメント化されたプログラム要素の語彙的スコープで解決される。以下は、他のクラスや引数を参照するドキュメント・コメントの例です。クラスのドキュメントへのリンクになる。ドキュメントを参照すること。:Documentationを参照すること。サマリーこのページでは、Dart言語でよく使われる機能をまとめた。多くの機能が実装される予定だが、既存のコードを壊すことはないと思われる。Dartを参照すること。Libraries」を参照すること。最後に以上でDart言語公式ドキュメントの「ツアー」部分を読み終わりました。この先にもさまざまな項目が並んでいます。全てを読みきれないので、とりあえずはここまでにします。...Dartツアー(3)演算子Flutterを始めてみましたが、コードはDart言語で書きます。...Dartツアー(4)制御文、例外Flutterを始めてみましたが、コードはDart言語で書きます。プログラミング言語Rustの13章練習問題をやってみました。プログラミング言語Rustの8章練習問題をやってみました。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。祈りへと至る沈黙コミカライズから原作を読み始めました。今年はアニメもあります。白紙よりもう一度コミカライズから原作を読み始めました。今年はアニメもあります。1現実に追い越されたラノベとして有名?ですが、藤井さんが八冠達成。女神の化身XIIアニメの続きの話が盛り上がってますが、原作本編はこれが最終巻。読書ラノベ感想:転校先の清楚可憐な美少女が、昔男子と思って一緒に遊んだ幼馴染だった件7アニメ化が決まったとのことですが、本作も順調に7巻目。さんコメントありがとうございます。BOOKWALKERの読み放題にはあるのですね。