- numbers
- strings
- booleans
- lists (also known as arrays)
- maps
- runes (for expressing Unicode characters in a string)
- symbols
1. Numbers
มี int
และ double
1 2 3 4 5 6 7 8 9 10 11 12 13 |
main() { int x = 1; int hex = 0xDEADBEEF; double y = 1.1; double exponents = 1.42e3; print(x); print(hex); print(y); print(exponents); } |
บรรทัดที่ 3 : กำหนดค่าเป็นเลขฐาน 16
จะได้
1 2 3 4 |
1 3735928559 1.1 1420.0 |
การ parse จาก string เป็น number
1 2 3 4 5 6 7 8 9 |
main() { // String -> int var one = int.parse('1'); assert(one == 1); // String -> double var onePointOne = double.parse('1.1'); assert(onePointOne == 1.1); } |
การ parse จาก number เป็น string
1 2 3 4 5 6 7 8 9 |
main() { // int -> String String oneAsString = 1.toString(); assert(oneAsString == '1'); // double -> String String piAsString = 3.14159.toStringAsFixed(2); assert(piAsString == '3.14'); } |
บรรทัดที่ 7 : กำหนดทศนิยม 2 ตำแหน่ง
การทำ bitwise operators
shift (<<
, >>
)
AND (&
)
OR (|
)
1 2 3 4 5 6 |
main() { assert((3 << 1) == 6); // 0011 << 1 == 0110 assert((3 >> 1) == 1); // 0011 >> 1 == 0001 assert((3 | 4) == 7); // 0011 | 0100 == 0111 assert((3 & 4) == 0); // 0011 & 0100 == 0000 } |
2. Strings
การใช้ quote และ double quote
1 2 3 4 5 6 |
main() { var s1 = 'Single quotes work well for string literals.'; var s2 = "Double quotes work just as well."; var s3 = 'It\'s easy to escape the string delimiter.'; var s4 = "It's even easier to use the other delimiter."; } |
การใช้ $s
, ${s}
, ${s.toSomeThing()}
1 2 3 4 5 6 7 8 9 10 |
main() { var s = 'string interpolation'; assert('Dart has $s, which is very handy.' == 'Dart has string interpolation, ' + 'which is very handy.'); assert('Dart has ${s}, which is very handy.' == 'Dart has string interpolation, ' + 'which is very handy.'); assert('That deserves all caps. ' + '${s.toUpperCase()} is very handy!' == 'That deserves all caps. ' + 'STRING INTERPOLATION is very handy!'); } |
การต่อ strings
1 2 3 4 5 6 7 8 9 10 11 |
main() { var s1 = 'String ' 'concatenation' " works even over line breaks."; assert(s1 == 'String concatenation works even over ' 'line breaks.'); var s2 = 'The + operator ' + 'works, as well.'; assert(s2 == 'The + operator works, as well.'); } |
multi-line string ด้วย triple quote
ใช้ได้ทั้ง single quote หรือ double quote
แต่สำคัญว่าช่องว่าง และการเคาะบรรทัดมีผลกับข้อความ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
main() { var s1 = ''' You can create multi-line strings like this one. '''; var s2 = """This is also a multi-line string."""; var s3 = """This is also a multi-line string."""; print(s1); print(s2); print(s3); } |
จะได้
1 2 3 4 5 6 7 |
You can create multi-line strings like this one. This is also a multi-line string. This is also a multi-line string. |
“raw” string
1 2 3 4 5 6 |
main() { var s1 = 'This is a normal string.\n The second line.'; var s2 = r'In a raw string, not even \n gets special treatment.'; print(s1); print(s2); } |
บรรทัดที่ 2 : s1
เป็น string ธรรมดา
บรรทัดที่ 3 : s2
เป็น raw string เพราะมี r
อยู่ด้านหน้า
จะได้
1 2 3 |
This is a normal string. The second line. In a raw string, not even \n gets special treatment. |
3. Booleans
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
main() { // Check for an empty string. var fullName = ''; assert(fullName.isEmpty); // Check for zero. var hitPoints = 0; assert(hitPoints <= 0); // Check for null. var unicorn; assert(unicorn == null); // Check for NaN. var iMeantToDoThis = 0 / 0; assert(iMeantToDoThis.isNaN); } |
4. Lists
list หรือ array
1 2 3 4 5 6 7 8 9 10 11 |
main() { var list = [1, 2, 3]; assert(list.length == 3); assert(list[1] == 2); list[1] = 1; assert(list[1] == 1); var constantList = const [1, 2, 3]; // constantList[1] = 1; // Uncommenting this causes an error. } |
5. Maps
เป็น keys และ values
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
main() { var gifts = { // Key: Value 'first': 'partridge', 'second': 'turtledoves', 'fifth': 'golden rings' }; var nobleGases = { 2: 'helium', 10: 'neon', 17: 'argon', }; var mix = { 'first': 'partridge', 10: 'neon', 17: 'argon', }; print(gifts); print(nobleGases); print(mix); } |
จะได้
1 2 3 |
{first: partridge, second: turtledoves, fifth: golden rings} {2: helium, 10: neon, 17: argon} {first: partridge, 10: neon, 17: argon} |
กำหนดค่าแบบนี้ก็ได้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
main() { var gifts = Map(); gifts['first'] = 'partridge'; gifts['second'] = 'turtledoves'; gifts['fifth'] = 'golden rings'; var nobleGases = Map(); nobleGases[2] = 'helium'; nobleGases[10] = 'neon'; nobleGases[17] = 'argon'; var mix = Map(); mix['first'] = 'partridge'; mix[10] = 'neon'; mix[17] = 'argon'; print(gifts); print(nobleGases); print(mix); } |
ใช้ทั้ง 2 แบบด้านบนร่วมกันก็ได้
1 2 3 4 5 6 |
main() { var gifts = {'first': 'partridge'}; gifts['fourth'] = 'calling birds'; // Add a key-value pair print(gifts); } |
จะได้
1 |
{first: partridge, fourth: calling birds} |
การอ่านค่า ถ้าอ่านค่าที่ไม่มีอยู่จริง จะได้ null
1 2 3 4 5 6 7 |
main() { var gift1 = {'first': 'partridge'}; assert(gift1['first'] == 'partridge'); var gift2 = {'first': 'partridge'}; assert(gift2['fifth'] == null); } |
หาจำนวนของ key-value pairs ใน map ด้วย .length
1 2 3 4 5 |
main() { var gifts = {'first': 'partridge'}; gifts['fourth'] = 'calling birds'; assert(gifts.length == 2); } |
ใช้ map แบบ const
1 2 3 4 5 6 7 8 9 |
main() { final constantMap = const { 2: 'helium', 10: 'neon', 18: 'argon', }; // constantMap[2] = 'Helium'; // Uncommenting this causes an error. } |
6. Runes
In Dart, runes are the UTF-32 code points of a string.
Dart string is a sequence of UTF-16 code units, expressing 32-bit Unicode values within a string requires special syntax.
Unicode code point is \uXXXX
.
1 2 3 4 5 6 7 8 9 10 |
main() { var clapping = '\u{1f44f}'; print(clapping); print(clapping.codeUnits); print(clapping.runes.toList()); Runes input = new Runes( '\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}'); print(new String.fromCharCodes(input)); } |
จะได้
1 2 3 4 |
👏 [55357, 56399] [128079] ♥ 😅 😎 👻 🖖 👍 |
การ reverse a string
1 2 3 4 5 6 7 8 9 10 11 |
main() { var input = "Music \u{1d11e} for the win"; // Music for the win print(input); print(input.split('').reversed.join()); // niw eht rof print(new String.fromCharCodes( input.runes.toList().reversed)); // niw eht rof cisuM var input2 = 'Ame\u{301}lie'; // Amélie print(input2); print(new String.fromCharCodes(input2.runes.toList().reversed)); // eiĺemA } |
จะได้
1 2 3 4 5 |
Music for the win niw eht rof �� cisuM niw eht rof cisuM Amélie eiĺemA |
จะเห็นได้ว่าบรรทัดที่ 2 ผิด แต่ก็มีวิธีแก้คือบรรทัดที่ 3 ถูกต้อง
แต่จะเห็นได้ว่าบรรทัดที่ 5 accent อยู่ผิดที่
อันนี้ยังเป็นปัญหาอยู่ ดูได้ที่ How do I reverse a String in Dart?
7. Symbols
A Symbol object represents an operator or identifier declared in a Dart program. You might never need to use symbols, but they’re invaluable for APIs that refer to identifiers by name, because minification changes identifier names but not identifier symbols.
To get the symbol for an identifier, use a symbol literal, which is just #
followed by the identifier:
1 2 |
#radix #bar |
Link