Dart Language

ကျွန်တော်နှင့် Dart Programming Language Part (3)

အရင်အပိုင်းကို ဖတ်ချင်တယ်ဆိုရင်

ဒီအပိုင်းတွေဟာ ကျွန်တော်လေ့လာနေရင်း တွေ့လာတဲ့ ထူးခြားချက်တွေကို မှတ်ထားတဲ့ မှတ်စုတွေကနေ စုပြီး ရေးထားတာ ဖြစ်ပါတယ်။

typedef

typedef ဆိုတာ function-type alias ဖြစ်ပါတယ်။ ကျွန်တော်တို့ နမူနာလေးနဲ့ ရေးကြည့်မယ်ဆိုရင် ပိုပြီးရှင်းသွားပါလိမ့်မယ်။

typedef Operation(int firstNum, int secondNum);

Add(int firstNum, int secondNum) {
  print(firstNum + secondNum);
}

Subtract(int firstNum, int secondNum) {
  print(firstNum - secondNum);
}

Multiply(int firstNum, int secondNum) {
  print(firstNum * secondNum);
}

Divide(int firstNum, int secondNum) {
  print(firstNum / secondNum);
}

main(List<String> arguments) {
  Operation op;
  op = Add;
  op(45, 67);
  op = Subtract;
  op(60, 20);
  op = Multiply;
  op(45, 5);
  op = Divide;
  op(45, 5);
}

အပေါ်မှာ ရေးထားတဲ့အတိုင်း typedef Operation ဆိုပြီး passing value နှစ်ခုနဲ့ သတ်မှတ်လိုက်ပါတယ်။ အဲဒါပြီးရင်တော့ အဲဒီ typedef ကို သုံးပြီး passing value တွေတူတဲ့ function တွေကို ပြန်ချိတ်ပြီး သုံးသွားပါတယ်။

.. in dart

ကျွန်တော် Moor ကို လေ့လာတော့ (..) ဆိုတဲ့ အသုံးကို တွေ့ပါတယ်။ အဲဒါနဲ့ လေ့လာကြည့်တော့ cascade notation ဆိုပြီး တွေ့ပါတယ်။ ဥပမာနဲ့ဆိုရင် ရှင်းသွားမယ် ထင်ပါတယ်။

List list = [];
list.add(45);
list.add(60);
list.add(80);
list.add(56);

အပေါ်မှာ ရေးထားတဲ့အတိုင်း သုံးမယ့်အစား အောက်မှာ ရေးထားတဲ့အတိုင်း ရေးလို့ရပါတယ်။

List list = [];
  list
    ..add(45)
    ..add(60)
    ..add(80)
    ..add(56);

အောက်မှာ ပြထားတဲ့ ပုံစံလဲ ရေးလို့ရပါတယ်။

var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);

()() in Dart

အဲဒီလိုပဲ လေ့လာနေရင် ()() ဆိုတဲ့ အသုံးကို ထပ်တွေ့လာပါတယ်။ အဲဒါလဲ နမူနာလေးနဲ့ဆိုရင် ပိုပြီး နားလည်လွယ်ပါလိမ့်မယ်။

main() {
  var tc = TestCall();
  tc.assign().call();
  tc.assign()();
}

class TestCall {
  int num;
  TestCall assign() {
    this.num = 56;
    return this;
  }
  call() {
    print(num);
  }
}

.call() ဆိုတာကို မရေးတော့ပဲ ()() ဆိုပြီး တန်းချိတ်လို့ရပါတယ်။