เรียนเขียนโปรแกรมง่ายๆกับ Expert Programming Tutor ในบท Simple And Bug - Free Code With Dart Operators
ขอเริ่มจากพื้นฐานที่สุดก่อน คือ การ import package รูปแบบปกติที่เราใช้ เช่น import ‘dart:math’; โดยจะเป็นการนำ package math มาใช้ ซึ่งเราก็จะเรียกใช้ทุกอย่างใน math ได้ทั้งหมด เช่น ฟังชันก์ log และ sin cos tan ตรีโกณทั้งหลาย
|
ทีนี้ในหลายครั้งชื่อฟังชันก์ของ package ที่ import เข้ามา มันก็มีโอกาสซ้ำกับของเรา แถมยังอ่านยากว่ามาจากไหนกันแน่ เราสามารถเพิ่ม keyword as เพื่อตั้งชื่อให้มันได้
|
อีก keyword คือ show มันคือการเลือกเฉพาะ class ที่เราจำเป็นต้องใช้เข้ามา เช่น เราต้องการใช้เฉพาะ Random ใน math เราก็เลือกใช้ show Random โดยสามารถ , เพิ่มได้หลาย class
|
การต่อ String ซึ่งใน dart ก็ยังใช้ + operator ได้เหมือนภาษาอื่นๆ อีกแบบคือการใช้ $ มาแทนใน String เลยก็ได้เช่นกัน หากเป็นกรณี instance จะต้องมี { } ครอบ
|
Ternary operator คือ รูปย่อของ if ที่น่าจะคุ้นเคยกันในหลายๆภาษา เช่น php , javascript มันคือcondition? true : false
|
ในการเขียนโปรแกรม บ่อยครั้งที่การตรวจสอบค่า null เกิดขึ้นอย่างเป็นประจำ ซึ่งมันก็เป็นโค้ดเดิมๆ อย่างเช่น if( data !== null ) ดังนั้น Null coalescing operator จึงเกิดมาเพื่อลดภาระการตรวจสอบ null ให้เหลือแค่การเอา ?? ไปไว้ด้านหลังตัวแปร ถ้าค่านั้นเป็น null ก็จะใช้ค่า default แทน
|
หากเราต้องการเข้าถึง field หนึ่งใน object แต่ไม่แน่ใจว่า object นั้น null หรือไม่ เราสามารถใช้ ?. มาช่วยได้
|
ดูเหมือนเรื่องของ null จะเยอะเหลือเกิน เพราะมันคือปัญหาจริงๆ มีหลายครั้งที่เราต้องการ กำหนดค่าถ้ามันเป็น null เราก็จะใช้ if(name == null) งานซ้ำๆแบบนี้ ต้องใช้ null coalescing assignment ที่ลดรูปเหลือแค่ ??=
|
Arrow คือรูปย่อของ function/method ที่มีการทำงานบรรทัดเดียวและ return ค่า เช่น method isAlive() ที่ return true;
|
เราสามารถเขียนย่อๆโดยใช้ arrow ว่า isAlive() => true; ซึ่งมันก็คือการตัด { } และคำว่า return ออกให้สั้นลง อ่านง่ายขึ้น ทำให้เข้าใจได้เลยว่ามันคือ input => output
|
Cascade notation คือการลดรูปของการ assign ค่าให้ instance จากเดิมที่เราต้องเขียน ชื่อ instance ซ้ำๆ เช่น
|
cascade notation จะลดรูปโดยการลด การเขียนชื่อ instance ออกและใช้ . แทน รวมทั้งไม่ต้องเขียน ; ปิดท้ายแต่ละ field ด้วย เขียนครั้งเดียวตอนจบ เช่น
|
ตัวอย่างด้านล่างจะเพิ่มความซับซ้อนขึ้นมาอีกนิด
|
เคยไหมที่เราต้องหารค่าที่มีทศนิยมแล้วต้องแปลง cast เพื่อให้เป็น integer ใน dart เราแค่ใช้ ~/ ก็ cast ให้อัตโนมัติ แล้วได้ integer แล้วละ
|
ซึ่งเทียบกับการเขียนแบบเดิมที่ใช้ toInt() ก็ดูสะดวกขึ้นเยอะ
|
การกำหนดค่าเริ่มต้นของ class ใน constructor ที่เราพบเห็นบ่อยๆใน Java มักจะเขียนแบบนี้ คือ อธิบายครบครันเรื่อง variable type และการใช้ this เพื่อเจาะจง field ใน class
|
ใน dart ก็สามารถเขียนแบบนั้นได้เช่นกัน แต่สามารถลดทอน ให้สั้นลงเหลือแค่ this และไม่ต้องระบุ type เพราะระบุไปแล้วใน class
|
ใน dart ไม่มี method Overloading ที่ชื่อเดียวกันมี parameter หลายแบบ แบบใน Java แต่ใน dart จะใช้ method เดียว ที่เพิ่มให้ parameter เป็น optional แทน คือการใส่ [] ให้มันและกำหนดค่า default หากไม่กำหนดจะเป็น null
|
ในหลายๆกรณี ที่ method มี optional parameter ของ method เยอะมากๆ ทำให้เราสับสนลำดับของมัน การทำ optional อีกแบบใน dart คือการตั้งชื่อให้มัน ทำให้เราสามารถสลับลำดับของ parameter ได้ โดยการกำหนดผ่านชื่อของมัน รูปแบบนี้ใน Flutter เป็นที่นิยมมาก เพราะ Widget มี field จำนวนมาก และการ custom ก็ต้องการความหลากหลายนั่นเอง
|
สรุป
บล็อกนี้ได้สรุปพื้นฐานเรื่อง syntax และการลดรูปในภาษา Dart เอาไว้คร่าวๆครับ ซึ่งจริงๆแล้ว syntax ไม่ได้ยากเลย เพราะหลายๆอย่างมีความคล้ายกับภาษาอื่นๆอีกด้วย
Credits
https://medium.com/@dev.n/simple-and-bug-free-code-with-dart-operators-2e81211cecfe
Tag ที่น่าสนใจ: dart operators package_importing string_concatenate ternary_operator null_coalescing_operator null_conditional null_coalescing_assignment_operator arrow_notation cascade_notation floored_integer_division
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM