สรุปพื้นฐานภาษา Dart ก่อนเขียน Flutter

สำหรับคนที่อยากพัฒนา Mobile App หรือ Web App ด้วย Flutter สิ่งแรกที่ต้องทำคือ การศึกษาภาษา Dart ครับ

.
ภาษา Dart เป็นภาษาแบบ Object-Oriented รองรับทั้ง JIT (Just In Time) และ AOT (Ahead of Time) สำหรับคนที่เคยเขียนภาษาที่เป็น OOP มาก่อน จะทำให้การศึกษาภาษา Dart รวดเร็วยิ่งขึ้นครับ เช่น เคยเขียนภาษา JAVA หรือ C# เป็นต้น และแน่นอนภาษา Dart เป็นภาษาแบบ strongly typed (ต้องระบุชนิดข้อมูล แต่ก็รองรับ dynamic types ด้วยนะครับ ถ้าเราจะเลือกใช้)

สำหรับคนที่เคยเขียนภาษาที่เป็น dynamic types มาก่อน เช่น Ruby, Python หรือ JavaScript อาจจะต้องปรับตัวกันนิดนึงครับ 

.
วันนี้ผมจะลองสรุปพื้นฐานภาษา Dart แบบสั้นๆ ให้อ่านกันนะครับ เผื่อใครสนใจเขียน Flutter ทั้งแบบ Mobile และ Web App มาเริ่มกันเลย!

.
1. ตัวอย่างการประกาศตัวแปรรูปแบบต่างๆ

String name; // หากไม่กำหนดค่าเริ่มต้นให้กับตัวแปร จะมีค่า default เป็น null ครับ (null ใน dart จะเป็น objects)

int age;

double num2 = 10.50;

List<String> names; // List คือ arrays ในภาษาอื่นๆ

Map<String, int> products;

int three = null;

const String fullname= 'Akenarin';

var message = 'Hello'; // ประกาศตัวแปรโดยไม่ต้องระบุ type

dynamic myVar = "Hello"; // ตัวแปร myVar เป็นแบบ
dynamic types สามารถกำหนดค่าได้ทุกชนิดข้อมูล

final name = 'Bob';

.
2. ตัวอย่างการเขียนฟังก์ชัน การเขียนฟังก์ชันในภาษา Dart ต้องใส่ return type ด้วยนะครับ (รวมถึง argument) เช่น

int addNums(int x, int y) {
return x + y;
}

หรือ
String makeGreeting(String name) {
return 'Hello, $name';
}

.
3. การ comments โค้ด รองรับ 3 แบบ ดังนี้

// In-line comments

/*
Blocks of comments.
*/

/// Documentation
///
/// สำหรับเขียนเอกสารคู่มือ

.
4. การใช้งาน Operators คล้ายกันกับภาษาอื่นๆ เช่น การบวก ลบ คูณ หาร ( + , – , * , /) จะมีแตกต่างบ้าง เช่น

เครื่องหมาย ~/ คือ เมื่อหารกันแล้วจะปัดเศษผลลัพธ์เป็นจำนวนเต็มที่ใกล้เคียงที่สุด เช่น 5 ~/ 2 จะเท่ากับ 2

as เอาไว้สำหรับทำ typecasts

is และ is! สำหรับตรวจสอบว่า 2 objects มี type เดียวกันหรือไม่ (จะใช้ == หรือ != ก็ได้)

.
5. คำสั่งต่างๆ เกี่ยวกับการจัดการค่า null จะทำให้เราเขียนโค้ดสั้นลง คือไม่ต้องเขียนแบบนี้แล้ว
if (user != null) {
this.userAge = user.age;
}

.
5.1 เครื่องหมาย ?? สำหรับตรวจสอบว่าเป็นค่า null หรือไม่ ถ้าเป็น null ให้ใช้ค่า default แทน (คือ ตัวเลข 20)

this.userAge = user.age ?? 20;

.
5.2 เครื่องหมาย ?. สำหรับตรวจสอบว่าเป็นค่า null หรือไม่ ถ้ามีข้อมูลให้แสดงค่าของฟิลด์นั้นออกมา (ฟิลด์ age) แต่ถ้าเป็น null ก็จะไม่มี error อะไร

this.userAge = user?.age;

.
5.3 เครื่องหมาย ??= สำหรับตรวจสอบว่าเป็น null หรือไม่ ถ้าเป็น null ให้กำหนดค่าเป็นเลข 3 แทน ถ้าไม่เป็น null ก็ทำงานตามปกติ เช่น

int x;
x ??= 3;
print(x); //ผลลัพธ์ คือ 3 เพราะ x เป็น null

.
6. การเขียน if และ else เขียนแบบปกติได้เลยครับ เช่น

if (inBangkok && isSummer) {
print('The weather is amazing! 55');
} else if(inBangkok && isAnyOtherSeason) {
print('Torrential downpour.');
} else {
print ('Check the weather!');
}

.
7. การเขียน if แบบย่อ (ternary operator) ก็มีนะครับ คล้ายกันกับภาษาอื่นๆ

String loginStatus = user.isLogin == true ? 'success' : 'error';

.
8. การเขียน Loops ก็จะคล้ายกับภาษาอื่นๆ เช่นมี for, while, do while เป็นต้น ขอยกตัวอย่าง for-in ดังนี้

// for-in
var pets = ['OO', 'Duck', 'Yelly'];
for (var pet in pets) {
print(pet);
}

.
9. การนำ strings มาต่อหรือเชื่อมกัน (concatenate strings) ทำได้ดังนี้

String a = 'Bob';
String b = 'b';

var c1 = a + b; // ใช้เครื่อง +

var c2 = 'Hello $a and $b'; // ใช้ string interpolation (เครื่องหมาย $)

var c3 = 'a' 'b' 'c'; // ใช้การเว้นวรรคระหว่าง strings จะทำการต่อหรือเชื่อมอัตโนมัติ

var c4 = '${user.name}'; // ถ้าเป็น instance ให้ใส่ {} ครอบด้วย

.
10. การสร้าง string แบบหลายบรรทัด ให้ใช้ triple quote (พิมพ์ quote 3 ตัวติดกัน) หรือ double quotation marks (ฟันหนู 3 ตัวติดกัน) มาครอบ string ไว้ เช่น

var s1 = '''
บรรทัดที่ 1
บรรทัดที่ 2
บรรทัดที่ 3
''';

.
สำหรับคนที่อยากเขียน Flutter ก็ลองศึกษาภาษา Dart เพิ่มเติมได้นะครับ ที่เว็บ => https://dart.dev/

.
หรือถ้าใครอยากทดลองเขียนโดยไม่ต้องติดตั้ง ก็ไปที่เว็บ => https://dartpad.dev/

.
ลองศึกษาดูนะครับ
โค้ชเอก

โค้ชเอก

Coding Mentor

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.