thisキーワード
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 5/110。
this キーワードは、クラスの現在のインスタンスを指します。メソッド内では、this を使ってオブジェクト自身の変数にアクセスできます。
ここでは、thisを使用するメソッドを持つclassの例を示します:
class Car {
String color = '';
String model = '';
void honk() {
print('Beep beep!');
}
void describe() {
print('I am a ${this.color} ${this.model}');
}
}describe() の内部では、this.color と this.model はその特定のオブジェクトの variable を指します。
car オブジェクトを作成し、その変数を設定します。
Car myCar = Car();
myCar.color = 'Red';
myCar.model = 'Sedan';メソッドを呼び出します:
myCar.honk();
myCar.describe();出力:
Beep beep!
I am a Red Sedanthis は、method parameter が instance variable と同じ名前を持つ場合に特に便利です:
class Car {
String color = '';
void setColor(String color) {
this.color = color; // this.color = インスタンス変数, color = パラメータ
}
}thisがなければ、Dartはcolorがparameterを指しているのか、instance variableを指しているのか判断できません。要点:thisは常に、現在methodを呼び出している特定のオブジェクトを指します。
チャレンジ
簡単thisキーワードを使用して、車の年式、メーカー、モデルを次の形式で出力するdisplayInfoというメソッドを追加し、Carクラスをcar.dartで完成させてください。
'This car is a [year] [make] [model]'
car.dart:displayInfoメソッドを追加するCarクラスが含まれていますdriver.dart:carオブジェクトの変数を設定し、displayInfo()を呼び出します(ロック済み)
自分で試してみよう
import 'car.dart';
void main() {
Car myCar = Car();
myCar.year = '2020';
myCar.make = 'Toyota';
myCar.model = 'Corolla';
myCar.displayInfo();
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ自分で練習してみよう: Dartオンラインコンパイラ