Syntax และ Shorthand Techniquesในภาษา Dart

NottDev
2 min readAug 17, 2019

--

สำหรับการเขียนโปรแกรมนั้นเชื่อว่าทุกคนอยากให้ code มีความสั้น กระชัด และอ่านง่าย สำหรับภาษา Dart นั้นก็มี syntax การเขียนรูปแบบย่อหรือแบบลดรูปมาให้เช่นเดียวกับภาษาอื่นๆ มีอะไรบ้างนั้น ไปดูพร้อมกันเล๊ยยยย

*** สามารถคลิกที่ ViewCode เพื่อเปิดดู code และลอง run ผ่านเว็บได้เลย :)

?: (Ternary Operator)

รูปย่อของ if ที่น่าจะคุ้นเคยกันในหลายๆภาษา เช่น php , javascript

  • รูปแบบคือ condition? true : false

การเขียนรูปแบบทั่วไป

bool isLogin = false;
String message = "";
if(isLogin) {
message = "Welcome";
} else {
message = "Please login";
}

การเขียนรูปแบบย่อ

bool isLogin = false;
String message = isLogin ? "Welcome" : "Please login";

ViewCode

?? (Null coalescing operator)

รูปย่อของการตรวจสอบค่า null ของตัวแปร ถ้ามีค่าเป็น null จะใช้ค่า default แทน

  • รูปแบบคือ variable ?? default value
String name;print(name ?? "NottDev");  // => NottDev

ViewCode

?. (Null conditional)

เมื่อเราต้องการเข้าถึง field หนึ่งใน object แต่ไม่แน่ใจว่า object นั้น null หรือไม่? เราสามารถใช้ ?. มาช่วยได้

  • รูปแบบคือ referenceVariable?.variable
void main() {    var student = Student();
print(student?.address?.province ?? 'Bangkok');
}class Student {
String name;
Address address;
}
class Address {
String province;
}

ViewCode

??= (null coalescing assignment operator)

รูปย่อของการตรวจสอบค่า null ของตัวแปร ถ้ามีค่าเป็น null จะ assing ค่า default ให้ตัวแปรนั้น

  • รูปแบบคือ variable ??= default

การเขียนรูปแบบทั่วไป

String name;if(name == null) {
name = "NottDev";
}

การเขียนรูปแบบย่อ

String name;name ??= "NottDev"; // name = name ?? "NottDev";

ViewCode

=> (Arrow notation)

รูปย่อของ function/method ที่มีการทำงานบรรทัดเดียวและ return ค่า

  • รูปแบบคือ functionName() => value;

การเขียนรูปแบบทั่วไป

String lowerCase(String s) {
return s.toLowerCase();
}

การเขียนรูปแบบย่อ

String lowerCase(String s) =>  s.toLowerCase();

ViewCode

.. (Cascade notation)

รูปย่อของการ assign ค่าให้ instance จากเดิมที่เราต้องเขียน ชื่อ instance ซ้ำๆ

  • รูปแบบคือ ..instanceVariable = value

การเขียนรูปแบบทั่วไป

Student student = Student();
student.name = "NottDev";
student.age = 14;
student.grade = 3.12";

การเขียนรูปแบบย่อ

Student student = Student()
..name = "NottDev"
..age = 14
..grade = 3.12;

ViewCode

~/ (Floored integer division)

รูปย่อของการหารค่าที่มีทศนิยมแล้ว cast ผลลัพธ์เป็น integer ให้อัตโนมัติ

  • รูปแบบคือ num~/num

การเขียนรูปแบบทั่วไป

double num1 = 10.00;
double num2 = 3.00;
int floor = (num1 / num2).toInt();
print(floor); // 3

การเขียนรูปแบบย่อ

double num1 = 10.00;
double num2 = 3.00;
int floor = num1 ~/ num2;
print(floor); // 3

ViewCode

… (Spread operator)

รูปย่อของการกระจาย (Spread) สมาชิกใน Array Map/Object หรือ String ไปสู่ Element หรือ ตัวแปรเป้าหมายที่เราต้องการได้

  • รูปแบบคือ [a, b, c, … [d, e] ]

Array

List<int> list = [1,2,3];

List<int> newList = [...list, 4, 5]; // [1, 2, 3, 4, 5]

Map/Object

var student = {'name': 'NottDev', 'age': 24};var newStudent  = {'grade': 3.12, ...student }; // {grade: 3.12, name: NottDev, age: 24}

ViewCode

Spread operator สามารถใช้ได้ตั้งแต่ Dart เวอร์ชั่น 2.3 ขึ้นไป

Reference:

(ข้อมูลอาจมีข้อผิดพลาด ถ้าจะเอาบทความนี้ไปอ้างอิงที่อื่นให้ตรวจสอบให้ดีก่อนนะครับ ขอบคุณครับ)

สำหรับวันนี้ ต้องขอลาไปก่อน สวัสดีครับ NottDev :)

--

--

NottDev
NottDev

Written by NottDev

Your only limit is your mind.

No responses yet