ฝึกภาษา Dart ภาษาใหม่ของ Google
บทความนี้ไม่ได้มาสอนนะครับ ผมจะเขียนแนวๆ Dart เขียนอย่างไรได้บ้าง
ซะมากกว่าเพราะผมคิดว่าตัวเองยังไม่เก่งพอที่จะสอนใครได้ครับ ขอมาเล่าสู่กันฟังดีกว่า
คิดว่าคนที่เข้ามาอ่านบทความนี้น่าจะรู้จัก Flutter กันแล้วและก็คงอยากจะลองเขียนดูใช่ไหม เหมือนผมเลย แต่เดียวก่อนเราควรศึกษาภาษาที่ใช้พัฒนากันก่อนสิ
Contents
- Hello World
- Variables
- Functions
- Lists
- Exceptions
กดลิ้งก์ Try-dart นี้เป็น IDE Online ครับ
ตัวอย่างการประกาศตัวแปรของ Dart
Variable Declaration
// ไม่ระบุ type
var tmp1 = "Hello";
var tmp2 = 2020;
var tmp3 = true;// ระบุ type
String tmp4 = "สวัสดี";
bool tmp6 = true;// Default value
int tmp5; // จะมีค่าเป็น null// Constant
final constant1 = 321;
const constant2 = 123;
Dynamic Variable
dynamic tmp1 = "BenzDroid";
tmp1 = 2020;
Object tmp2 = "BenzDroid";
tmp2 = 2020;// กำลังสงสัยใช่ไหมครับว่ามันต่างกันยังไง ลองใช้ lengthprint(tmp1.length);
print(tmp2.length);
tmp2 จะแจ้ง Error มาบอกก่อนเราจะกดรันใช่ไหมครับ
แต่ tmp1 ไม่แสดง Error อะไรออกมาเลย
เสริม var ไม่ใช่ Dynamic นะครับ
var tmp1 = “BenzDroid”;
tmp1 = 2020;
/* A value of type 'int' can't be assigned to a variable of type 'String' */
การประกาศฟังก์ชั่นในรูปแบบต่างๆ
Function Declaration
main() {
exampleFun();
sum(1,2); // 3
minus(2,3); // -1
multiply(4,5); // 20
divide(5,6); // 0.8333333333333334
}void exampleFun(){
print("example Function");
}// ประกาศ Type
int sum(int x1, int x2){
print(x1 + x2);
return x1+x2;
}// ไม่ระบุ Type
minus(x1, x2){
print( x1 - x2);
}// return ทันที แบบประกาศ Type
multiply(int x1, int x2) => print(x1 * x2);// return ทันที แบบไม่ระบุType
divide(x1, x2) => print(x1 / x2);
Positional parameters
จะเป็นการประกาศฟังก์ชั่นแบบต้องใส่ตัวแบบให้ตรงตำแหน่ง parameters จะมีลูกเล่นเพิ่มที่สามารถใส่ Default parameters ได้ด้วย […] ครับ
main(){
minus(3);
divide();
}minus(x1, [x2=2]){
print( x1 - x2);
}divide([x1=2, x2=2]) => print(x1 / x2);
Named parameters
จะเป็นการประกาศฟังก์ชั่นแบบเน้นใส่ค่าให้ตรงparamName: value
และจะมีลูกเล่นเหมือน Positional parameters คือสามารถใส่ Default parameters ได้แต่ไม่ต้องมี […] นะครับ
main(){
sum(x2:1,x1:2); // x1: 2 + x2: 1
sum(x1:1,x2:2); // x1: 1 + x2: 2
multiply(x1:4,x2:3); // 12
multiply(x1:4); // 0
}int sum({int x1, int x2}){
print("x1: $x1 + x2: $x2");
return x1+x2;
}multiply({int x1, int x2=0}) => print(x1 * x2);
Named and Positional สามารถนำมาผสมกันได้ด้วยนะครับ
List
Fixed-length, Growable and Const list
การประกาศ list ของ Dart เหมือน JavaScript ประกาศ array
main() {// Fixed-length
List<int> fixList = List<int>(3);
fixList[0] = 11;
fixList[1] = 22;
fixList[2] = 33;
// fixList[3] = 44; // Index out of range
var list = [1, 2, 3];
list.add(4); var constantList = const [1, 2, 3];
// constantList[1] = 1; // Uncommenting this causes an error.
}
Spread operator
(…) เป็นวิธีการส่งค่าหลายๆค่าลงต่อจาก list
main() {
var list = [1, 2, 3];
var list2 = [-1,0, …list]; // [-1, 0, 1, 2, 3]
var list2 = [-1,0, list]; // [-1, 0, [1, 2, 3]]
}
Null-aware spread operator
(…?) เป็นวิธีการส่งค่าหลายๆค่าลงต่อจาก list โดยดักว่ามี null ไหม
main() {
var list;
var list2 = [0, ...?list]; // [0]
}
Exception
main() {
try {
int error1 = 1;
error1++;
var error2 = [4, 5];
error2[9];
} on NoSuchMethodError { // (1)
print('NoSuchMethodError');
} on RangeError { // (2)
print('RangeError');
} catch (e, s) {
print('error: $e'); // (3)
print('stack: $s');
} finally {
print('Exit try'); // (4)
}
}
On
เป็นการ Filter Error ที่จะเกิดขึ้น เช่นถ้า error1 = null
ก็จะเข้าเงื่อนไข (1)
แต่ถ้าตามโค้ดข้างบน error2
จะเข้าเงื่อนไข (2)
Catch
ก็จะเหมือน Java เลยคือดักจับทุก Error แล้วพิมพ์ออกมาในช่อง (3)
Finally
จะเป็นส่วนสุดท้าย สำหรับการทำงานก่อนจบ อย่างโค้ดตัวอย่าง (4) ก็จะพิมพ์ Exit try ครับ
เพียงเท่านี้ผู้อ่านน่าจะพอรู้ว่าภาษา Dart เขียนยังไงไปคร่าวๆแล้วเดียวเรื่อง Class ผมขอยกไปบทความหน้านะครับ กลัวบทจะยาวจนเกินไป ถ้ามีอะไรติชมเขียนมาได้เลยนะครับ ผมจะได้เอาไปปรับปรุงในบทความต่อไป ขอบคุณที่อ่านจนจบครับ