Dart入門宝典第二章——賦値演算子、制御文、方法と閉パッケージに関する紹介
5868 ワード
代入演算子=通常付与 ??= 変数値がnullの場合、 が付与されます.
印刷結果:
上のコードでは、bは最初はnullとして値を付けていませんでしたが、この場合は??=付与値は有効になるので、印刷bの値は5である.cはすでに付与されているためnullではないため、??=有効ではありません.cの値は20です.
条件式三目演算子:condition?expr1 : expr2 ??演算子:expr 1??expr 2 expr 1がnullの場合、expr 2 が使用する.
印刷結果:
せいぎょぶん
Dartの制御文とJavaの制御文はほぼ同じですが、ここでは簡単にご紹介します.
じょうけんステートメント if文 if...else文 if...else if...else文 for文
whileサイクル whileサイクル do...whileサイクル breakとcontinue
switch case
方法
メソッドの定義
戻りタイプメソッド名(パラメータ1、パラメータ2、...){メソッドボディ...return戻り値}
次のようになります.
メソッドの特性メソッドも対象であり、具体的なタイプのFunction がある.戻り値タイプ、パラメータタイプともに を省略することができる.矢印構文:=>exprは{return expr;}略語は、式 にのみ適用されます.メソッドには戻り値があります.指定されていない場合は、デフォルトreturn null 上記定義で面積を求める方法は、getArea()を以下のように定義することができる.戻り値タイプ を省略する.パラメータタイプ を省略戻り値タイプとパラメータタイプ を省略する.矢印構文
戻り値voidを印刷する方法:
印刷結果:
オプションのパラメータオプション命名パラメータ:{params 1,params 2,...} オプション位置パラメータ:[params 1,params 2,...]
オプションのネーミングパラメータは、指定したパラメータ名に基づいて対応するパラメータを入力できます.このパラメータの位置に基づいて送信する必要はありません.オプションの位置パラメータは、パラメータが存在する位置に従って順番に入力できます.
オプションの名前付きパラメータのデモ:
オプションのネーミングパラメータは、送信可能か非送信可能かがわかります.オプションのネーミングパラメータを入力する場合は、パラメータ名の入力を指定する必要があります.
オプションの位置パラメータのデモ:
オプションの位置パラメータは、送信するか送信しないかがわかります.送信する場合は、順番に送信する必要があります.
既定のパラメータ使用=オプションパラメータでデフォルト値 を指定デフォルト値はコンパイル時定数 のみです.
印刷結果:
上記のコードのprintPerson()メソッドのオプションパラメータageはデフォルト値31を指定し、genderはデフォルト値「Male」を指定します.ageが入力されていない場合はデフォルトの31を使用し、genderが入力されていない場合はデフォルトの「Male」を使用します.
メソッドオブジェクトメソッドは、他の変数 にオブジェクトとして割り当てることができる.
printHello()メソッドは変数funcにオブジェクトとして割り当てることができ,funcを実行するにはメソッドとして呼び出すだけでよいことがわかる.方法は、パラメータとして他の方法 に渡すことができる.
前章でリストのforEach()メソッドを説明すると、なぜprintを入力するとリストを印刷できる要素が遍歴できるのか疑問に思うかもしれませんが、ここで疑問が解け、forEachソースコードを表示すると次のように見えます.
forEachはvoidメソッドを受信し、printメソッドはパラメータとして入力され、listを巡回してprintを呼び出して現在の要素を印刷することができます.
匿名メソッドは変数に値を与えることができ、変数によって を呼び出す.
「Hello」と印刷された匿名メソッドを直接hello変数に割り当て、メソッドとして呼び出すことができます.
上記も以下のように書くことができます.
ただし、この方法は名前が直接呼び出されていないため、理解しにくいため、使用は推奨されません.は、他の方法において直接呼び出すか、または他の方法 に渡すことができる.
パラメータとして入力される上記の方法と似ています.
ここでlistのforEach()メソッドを呼び出すと、遍歴した各要素を3回繰り返して印刷し、印刷した結果:
クローズドパッケージ閉パケットは、方法(オブジェクト) である.閉パケット定義は、他の方法の内部で である.閉パケットは、外部メソッド内のローカル変数にアクセス可能であり、その状態 を保持する.
a()メソッドで閉パッケージprintCountを宣言し、それを露出し、変数funcを介してa()メソッドを受信し、複数回呼び出し、印刷結果は:
countの値は順次増加し,閉パケットが外部メソッド内の局所変数にアクセスし,その状態を保持できることを示す.
匿名メソッドを使用して、閉パッケージを返すこともできます.
void main() {
var a = 10;
var b;
b ??= 5;
print(b);
var c = 20;
c ??= 5;
print(c);
}
印刷結果:
5
20
上のコードでは、bは最初はnullとして値を付けていませんでしたが、この場合は??=付与値は有効になるので、印刷bの値は5である.cはすでに付与されているためnullではないため、??=有効ではありません.cの値は20です.
条件式
void main() {
int gender = 0;
var str = gender == 0 ? "Male" : "Female";
print(str);
var a;
var b = "Dart";
print(a ?? b); // a null b
a = "Java";
print(a ?? b);// a null b
}
印刷結果:
Male
Dart
Java
せいぎょぶん
Dartの制御文とJavaの制御文はほぼ同じですが、ここでは簡単にご紹介します.
じょうけんステートメント
:
for( ; ; ){
}
:
for (var i = 0; i <= 5; i++) {
}
:
for(element in list){
}
:
var list = [1,2,3];
for(var item in list){
}
whileサイクル
switch case
方法
メソッドの定義
戻りタイプメソッド名(パラメータ1、パラメータ2、...){メソッドボディ...return戻り値}
次のようになります.
int getArea(int width, int height){
return width * height;
}
メソッドの特性
getArea(int width, int height){
return width * height;
}
int getArea(width, height){
return width * height;
}
getArea(width, height){
return width * height;
}
getArea(width, height) => width * height;
戻り値voidを印刷する方法:
void main() {
print(printPerson(" ", 31));
}
printPerson(name,age){
print("name = $name, age= $age");
}
印刷結果:
name = , age= 31
null
オプションのパラメータ
オプションのネーミングパラメータは、指定したパラメータ名に基づいて対応するパラメータを入力できます.このパラメータの位置に基づいて送信する必要はありません.オプションの位置パラメータは、パラメータが存在する位置に従って順番に入力できます.
オプションの名前付きパラメータのデモ:
void main() {
printPerson(" ");
printPerson(" ", age: 31);
printPerson(" ", gender: "Male");
printPerson(" ", age: 31, gender: "Male");
}
printPerson(String name, {int age, String gender}){
print("name = $name, age= $age, gender=$gender");
}
オプションのネーミングパラメータは、送信可能か非送信可能かがわかります.オプションのネーミングパラメータを入力する場合は、パラメータ名の入力を指定する必要があります.
オプションの位置パラメータのデモ:
void main() {
printPerson2(" ");
printPerson2(" ", 31);
printPerson2(" ", 31, "Male");
}
printPerson2(String name, [int age, String gender]){
print("name = $name, age= $age, gender=$gender");
}
オプションの位置パラメータは、送信するか送信しないかがわかります.送信する場合は、順番に送信する必要があります.
既定のパラメータ
void main() {
printPerson(" ");
printPerson(" ", age: 58);
printPerson(" ", age: 58, gender: "Male");
}
printPerson(String name, {int age = 31, String gender = "Male"}){
print("name = $name, age= $age, gender=$gender");
}
印刷結果:
name = , age= 31, gender=Male
name = , age= 58, gender=Male
name = , age= 58, gender=Male
上記のコードのprintPerson()メソッドのオプションパラメータageはデフォルト値31を指定し、genderはデフォルト値「Male」を指定します.ageが入力されていない場合はデフォルトの31を使用し、genderが入力されていない場合はデフォルトの「Male」を使用します.
メソッドオブジェクト
void main() {
var func = printHello;
func();
}
printHello(){
print("Hello");
}
printHello()メソッドは変数funcにオブジェクトとして割り当てることができ,funcを実行するにはメソッドとして呼び出すだけでよいことがわかる.
前章でリストのforEach()メソッドを説明すると、なぜprintを入力するとリストを印刷できる要素が遍歴できるのか疑問に思うかもしれませんが、ここで疑問が解け、forEachソースコードを表示すると次のように見えます.
void forEach(void f(E element)) {
for (E element in this) f(element);
}
forEachはvoidメソッドを受信し、printメソッドはパラメータとして入力され、listを巡回してprintを呼び出して現在の要素を印刷することができます.
匿名メソッド
void main() {
var hello = (){print("Hello");};
hello();
}
「Hello」と印刷された匿名メソッドを直接hello変数に割り当て、メソッドとして呼び出すことができます.
上記も以下のように書くことができます.
((){print("Hello");})();
ただし、この方法は名前が直接呼び出されていないため、理解しにくいため、使用は推奨されません.
パラメータとして入力される上記の方法と似ています.
void main() {
var list = ["1","2","3"];
list.forEach((item){print(item * 3);});
}
ここでlistのforEach()メソッドを呼び出すと、遍歴した各要素を3回繰り返して印刷し、印刷した結果:
111
222
333
クローズドパッケージ
void main() {
var func = a();
func();
func();
func();
}
a(){
int count = 0;
printCount(){
print(count++);
}
return printCount;
}
a()メソッドで閉パッケージprintCountを宣言し、それを露出し、変数funcを介してa()メソッドを受信し、複数回呼び出し、印刷結果は:
0
1
2
countの値は順次増加し,閉パケットが外部メソッド内の局所変数にアクセスし,その状態を保持できることを示す.
匿名メソッドを使用して、閉パッケージを返すこともできます.
a(){
int count = 0;
return (){
print(count++);
};
}