言語機能
-
ダートのすべてがオブジェクト、でもデジタル数字、関数function、ヌルもオブジェクトであるが、すべてのオブジェクトはObjectクラスから継承されます。
-
ダートは、動的デバッグモードタイプは、ダイナミック(動的)になるに型指定された変数を示していない、より安全な変数型を定義しようとする言語を入力しました。
-
ダート決意はすべて実行する前に、あなたのコード、データ、およびコンパイルの指定されたタイプの時定数は、あなたは、動作速度を向上させることができます。
-
ダートのクラスとインタフェースは、自然に良いサポートオブジェクト指向と並行プログラミングが含まれている、すなわちインタフェースクラス、あなたは、あなたがクラス(インターフェース)を実装できるクラスを継承することができ、統一されています。
-
ダーツは、トップレベルの機能を提供する(例えば:メイン())。
-
ダートはそれのlibがプライベートであることから始まる意味で「_」と、保護されたこれらのキーワード、変数名のプライベート、パブリックではありません。
-
初期化されていない変数がnullのデフォルト値が与えられます。
-
最終的な値は一度だけ設定することができます。CONSTは定数値は、CONST、VAR C =定数[]で作成することができ、コンパイル時定数であり、ここで、cは可変であるが、一定の値を割り当てられているか、他の値に設定されてもよいです。インスタンス変数は、最終的なことができますが、constのことができませんでした。
-
言語が孤立して存在していないプログラミング、ダートは、あまりにも、彼は言語仕様、仮想マシン、クラスライブラリ、およびツールやその他のコンポーネントでした。
- SDK:SDKはダーツVM、dart2js、パブ、ライブラリ、およびツールが含まれています。
- Dartium:クロムに埋め込まれたダーツVM、コードがブラウザに直接ダーツを実行することができます。
- Dart2js:JavaScriptのツールにダートコード。
- ダートエディタ:フル機能のEclipseベースのIDE、および上記のすべてのツールが含まれています。サポートするコード補完、コードナビゲーション、クイックフィックス、リファクタリング、デバッグおよびその他の機能。
倉庫
インポート標準ライブラリ
インポート 「ダーツ:数学」 ;
また、参照ダーツファイルへの相対パスまたは絶対パスを使用することができます
輸入 ' のlib /学生/ student.dart ' ;
パッケージを指定します。接頭辞は、主要なパッケージ管理システムライブラリを示し、
インポート ' パッケージ:utilsの/ utils.dart ' ;
あなたはライブラリをインポートするときは、使用できるas
名前空間の衝突を避けるために、ライブラリにエイリアスにキーワードを。
インポート ' パッケージ:LIB1 / lib1.dart ' ; インポート ' パッケージ:LIB2 / lib2.dart ' LIB2として; // 要素LIB1を使用 要素1要素 = 新新要素(); // 要素で使用LIB2 lib2.Element要素2 =新しいlib2.Element();
使用show
およびhide
キーワードは、ライブラリーメンバーの可視性を制御します
// ライブラリーシールドの輸入だけのfoo、他のメンバー のインポート 「パッケージ:LIB1 / lib1.dartとして」ショーfooという。 // シールドFOO、ライブラリーの他のメンバーが見てきた インポート 「パッケージ変更のために:LIB2 / lib2.dart 」非表示fooという。
めったに使われない機能をロードし、APPの起動時間を短縮するために、我々はまた、インポートライブラリを遅らせることができます。使用する deferred as
キーワード遅延読み込みを
インポート 「パッケージ:繰延/ hello.dart 」ハローとして繰延べ。 // あなたが使用する必要がある場合は、その後、LoadLibraryの識別子ライブラリ関数呼び出しによってロードされました hello.loadLibrary();
非同期プログラミング
ダートとJavaScriptは、シングルスレッドモデルです。しかし、これはダートが非同期プログラミングすることができないという意味ではありませんが、これは伝統的な非同期プログラミングのマルチスレッド非同期モードと異なっています
一つだけのスレッドで実行するすべてのダーツコード
一つだけのスレッドで実行するすべてのダーツコードが、ダーツのコードは、複数の分離株上で実行することができます。分離株ので何の競争、それらの間にはロックが、これほど少ないコスト、高パフォーマンスのデッドロック心配がありませんではありません、仮想マシンのスケジューリング、分離株の間には、共有メモリを隔離、小さなスレッドとして見ることができます。何の共有メモリが存在しないので、唯一の唯一のポートを介してそれらの間の通信、およびメッセージパッシングは常にダート非同期であるので。
async
そして、await
コードを書くことは非常に簡単で、かつ書き込みコードは、ビット同期コードは、実際には、非同期であるように思えるかもしれません。
関数シグネチャ添加async
機能をするように非同期的に実行されていることを示すキーワードawait
非同期戻りの完了の実装の結果を待って示すFuture
オブジェクト。しかし、もう一つ注意すべきは、await
唯一のasync
機能では、それほど頻繁に定義する必要があるasync
パッケージングのために、機能を。上記のコードtest
の機能は、包装に使用されます。
// ライブラリIO輸入、スリープ機能を呼び出す インポート 「DART:IO 」; // シミュレート時間のかかる操作、2秒スリープスリープ機能を呼び出します doTask()非同期{ await睡眠(constの持続時間(秒: 2 )); リターン " [OK]を" ; } // 包装用の関数を定義 試験()非同期{ VAR R = のawait doTask()。 プリント(R) } ボイドメイン(){ 印刷(「メインスタート」); テスト(); プリント(「主要エンド」); }
補完的なプロセス、スレッド
-
プロセスがリソース割り当ての最小単位であり、スレッドは、プログラム実行の最小単位です。
-
プロセスは、独自の別個のアドレス空間を有し、それぞれはプロセスを開始し、コードセグメント、スタックとデータセグメントを保持するデータテーブルを設定し、それのためにアドレス空間を割り当てるシステムは、この操作は非常に高価です。スレッドのオーバーヘッドは、プロセスよりもはるかに小さい作成中のプロセスよりもCPUの変更は、はるかに小さいスレッドをとるようにスレッドは、同じアドレス空間を使用して、共有のプロセスデータです。
-
スレッド、同じプロセスを共有グローバル変数、静的変数やその他のデータ内のスレッド、およびプロセス間通信との間のより便利な通信は、方法(IPC)通信で行います。しかし、どのように同期と相互排他を処理するためには、マルチスレッド・プログラムを書くことの難しさです。
-
しかし、長いスレッドのダイスがあるとしてプログラムより堅牢なマルチプロセス、マルチスレッドプログラム、全体のプロセスは、あまりにも、死んでいる、そしてプロセスは独自の個別のアドレス空間を持っているため、プロセスは、プロセスに影響を与えないであろう他のダイ。