flutter開発dart定義方法と異常(三)
2814 ワード
方法
一等メソッドオブジェクト
Dartは真のオブジェクト向け言語であり、方法もオブジェクトであり、タイプ
typedef修飾法により,開発においてjavaのように抽象的またはインタフェースを使用する必要がないようにコールバックが必要であれば,使用方法を用いることができる.例:
メソッドには、必要なパラメータとオプションのパラメータの2種類があります.必要なパラメータは、パラメータリストの前に、後でオプションのパラメータを定義する必要があります.
オプションの名前付きパラメータ
オプションのネーミングパラメータはjavaのリロードの代わりに使用でき、メソッドのパラメータを
メソッドを呼び出す場合、この形式
オプションの位置パラメータ
メソッドのパラメータを
既定のパラメータ値
メソッドを定義する場合、オプションパラメータは
匿名メソッド
名前のない方法を匿名の方法と呼び、lambdaやclosure閉パッケージと呼ぶこともできます.匿名メソッドの宣言は次のとおりです.
次のようになります.
異常
Javaとは異なり、すべてのDart異常は非チェック異常です.方法は必ずしも彼らが投げた異常を宣言し、異常を捕獲することを要求しない.
Dartは、
Javaとは異なり、例外部分をキャプチャし、Dartで例外をキャプチャするには
int add(int i,int j) {
return i + j;
}
// ( )
add( i, j) {
return i + j;
}
// , :
add(i, j) => i + j;
// (=>) (;)
一等メソッドオブジェクト
Dartは真のオブジェクト向け言語であり、方法もオブジェクトであり、タイプ
Function
を有する.これは,メソッドが変数に値を付与してもよいし,他のメソッドのパラメータとしてもよいことを意味する.メソッドをパラメータとして別のメソッドを呼び出すことができますvar list = [1,2,3];
// print forEach
list.forEach(print);
// Funcation
var p = print;
list.forEach(p);
typedef修飾法により,開発においてjavaのように抽象的またはインタフェースを使用する必要がないようにコールバックが必要であれば,使用方法を用いることができる.例:
typedef void onClick();
class Button {
void setOnlickListener(onClick listener) {
listener();
}
}
メソッドには、必要なパラメータとオプションのパラメータの2種類があります.必要なパラメータは、パラメータリストの前に、後でオプションのパラメータを定義する必要があります.
オプションの名前付きパラメータ
オプションのネーミングパラメータはjavaのリロードの代わりに使用でき、メソッドのパラメータを
{}
に置くとオプションのネーミングパラメータになります.int add({int i, int j}) {
if(i == null || j == null){
return 0;
}
return i + j;
}
メソッドを呼び出す場合、この形式
paramName: value
を使用して名前付きパラメータを指定できます.例://
add()
//
add(i:1)
//
add(i:1, j:2)
add(j:1, i:2)
オプションの位置パラメータ
メソッドのパラメータを
[]
に入れるとオプションの位置パラメータとなり、値伝達時にパラメータ位置順に伝達されるint add([int i, int j]) {
if(i == null || j == null){
return 0;
}
return i + j;
}
// 1 i
add(1);
//
add(1,2);
既定のパラメータ値
メソッドを定義する場合、オプションパラメータは
=
を使用してオプションパラメータのデフォルト値を定義できます.int add([int i = 1, int j = 2]) => i + j;
int add({int i = 1, int j = 2}) => i + j;
匿名メソッド
名前のない方法を匿名の方法と呼び、lambdaやclosure閉パッケージと呼ぶこともできます.匿名メソッドの宣言は次のとおりです.
([Type] param1, …) {
codeBlock;
};
次のようになります.
var list = ['apples', 'oranges', 'grapes', 'bananas', 'plums'];
list.forEach((i) {
print(list[i]);
});
異常
Javaとは異なり、すべてのDart異常は非チェック異常です.方法は必ずしも彼らが投げた異常を宣言し、異常を捕獲することを要求しない.
Dartは、
Exception
およびError
のタイプ、およびいくつかのサブタイプを提供する.また、自分の異常タイプを定義することもできます.しかしながら、Dartコードは、Exception
またはError
を実装したオブジェクトだけでなく、null以外のオブジェクトを例外として投げ出すことができる.throw new Exception(' ');
throw ' ';
throw 123;
Javaとは異なり、例外部分をキャプチャし、Dartで例外をキャプチャするには
catch
文を使用しますが、Dartのcatch
では例外タイプを指定できません.on
と組み合わせて使用する必要があります.基本的な文法は以下の通りです.try {
throw 123;
} on int catch(e){
// on int
} catch(e,s){
// catch() , , ( StackTrace )
rethrow; // `rethrow`
} finally{
}