สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial DART

L01 DART INTRO L02 DART HOWTO L02 DART HOW TO L03 DART GETTING START L04 DART SYNTAX L05 DART VARIABLE 01 L06 DART FUNCTION L06 DART VARIABLE 02 L08 DART OPTIONAL NAMED POSITONAL L09 DART LIST L10 DART CLASS L11 DART INHERITANCE MIXIN L12 DART EXCEPTION L13 DART GENERATOR AND ITERATOR L14 DART OPERATION

การประกาศตัวแปร variable(dynamic,object)

เรียนเขียนโปรแกรมง่ายๆกับ Expert Programming tutor ในบท variable (dynamic,object)
เราก็จะมาต่อเรื่องของการประกาศตัวแปร จากบทที่เเล้วที่เราเรียนรู้กันไปบ้างเเล้ว บทนี้ก็จะมาสอนอีกแบบนึงคือ แบบ dynamic กับ object 
2 อย่างนี้เเตกต่างกันอย่างไร เดี๋ยวให้นักเรียนสร้างตัวแปร dynamic มาก่อน สมมุติว่าเราเพิ่มตัวแปรขึ้นมา สร้างชื่อตัวแปรขึ้นมาว่า tmp11 = “EXPERT”;   
ตอนนี้ tmp ของตัวแปรตัวนี้ก็คือ string   เราสามารถเช็คได้ คือการทำการ print () มันมีค่า value เท่าไหร่  ก็คือ เราจะเข้าถึงตัวแปลงคือ tmp11: $tmp11 เเล้วเราจะมาถามต่อว่ามันคืออะไร จะพิมพ์คำว่า is  
ตัวอย่าง

void main() {
//dynamic
dynamic tmp11 = "EXPERT" ;
print("tmp11: $tmp11 is ${tmp11.runtimeType}");
}

ผลลัพธ์

Programming ,1234 ,true ,Dart ,9999 ,false
tmp11: EXPERT is String

ตอนนี้ตัวแปรtmp11 ของเราvalue เป็น EXPERT และมันเป็น string  เดี๋ยวเราจะเปลี่ยนแปลงค่าใหม่ ให้เป็นค่าตัวเลข ก็จะเป็นดังตัวอย่าง

void main() {
//dynamic
dynamic tmp11 = "EXPERT" ;
print("tmp11: $tmp11 is ${tmp11.runtimeType}");
tmp11 = 9999;
print("tmp11: $tmp11 is ${tmp11.runtimeType}");
}

ผลลัพธ์

Programming ,1234 ,true ,Dart ,9999 ,false
tmp11: EXPERT is String
tmp11: 9999 is int

ตอนนี้ value เป็น 9999 และมันเป็น int  การใช้ dynamic ค่อนข้างที่จะต้องระวังเป็นพิเศษ  มันจะเกิดเหตุการณ์นี้ขึ้น  ถ้าสมมุติว่าเราพิมพ์คำว่า tmp เเละเราจะเข้าถึงมัน เรียกว่าขนาดของตัวอักษร นั่นคือ length () มาดูตัวอย่าง

void main() {
//dynamic
dynamic tmp11 = "EXPERT" ;
print("tmp11: $tmp11 is ${tmp11.runtimeType}");
tmp11 = 9999;
//print("tmp11: $tmp11 is ${tmp11.runtimeType}");
print("${tmp11.length}");
}

ผลลัพธ์


สังเกตุเห็นอะไรบางอย่าง มันเป็น tmp ตัวเลขเนี่ย ตอนนี้เราพิมพ์มันไม่จะไม่ขึ้น error แต่เมื่อเรารัน มันจะเกิดข้อผิดพลาด เพราะเราจะดูความยาวของตัวอักษรไม่ใช่ตัวเลข  เดี๋ยวมาดูอีกตัวอย่างนึงกัน

void main() {
//dynamic
dynamic tmp11 = "EXPERT" ;
//print("tmp11: $tmp11 is ${tmp11.runtimeType}");
//tmp11 = 9999 ;
//print("tmp11: $tmp11 is ${tmp11.runtimeType}");
print("${tmp11.length}");
}

ผลลัพธ์

6

เห็นไหม ตัวอย่างที่เราทำจะเป็นข้อความ str ผลลัพธ์คือ 6 ตัวอักษร การใช้ dynamic น่ากลัวตรงนี้ คือเบื้องต้นผู้เรียนอาจจะพิมพ์พวก method ผิด มันจะไม่มีerror  มันจะerrorตอนรัน  มาดูตัวอย่าง

void main() {
//dynamic
dynamic tmp11 = "EXPERT" ;
print("tmp11: $tmp11 is ${tmp11.runtimeType}");
tmp11 = 9999;
//print("tmp11: $tmp11 is ${tmp11.runtimeType}"); //
print("${tmp11.length}");
print("${tmp11.catcatcat}");
}

ซึ่งตัวอย่างข้างต้น ข้อความดังกล่าวไม่มีอยู่จริง 

แต่มันยังไม่ขึ้น error เเต่เรามันจะขึ้นตอนรัน อันนี้ก็ฝากระวังด้วย
ต่อไปแบบ Object 
ตัวอย่าง
object tmp222 = “TUTOR” ;
เราก็ทำการ print() จะเหมือนกับ dynamic มันจะเข้าใจว่าค่าตัว tmp22 จะเป็นตัว str 

void main() {
//dynamic
dynamic tmp11 = "EXPERT" ;
print("tmp11: $tmp11 is ${tmp11.runtimeType}");
tmp11 = 9999;
//print("tmp11: $tmp11 is ${tmp11.runtimeType}"); //
//print("${tmp11.length}"); //
//print("${tmp11.catcatcat}"); //
Object tmp222 = "TUTOR";
print("tmp222: $tmp222 is ${tmp11.runtimeType}");
}

ผลลัพธ์

tmp11: EXPERT is String
tmp222: TUTOR is int

ต้องทำการcomment ตัว print ด้านบนก่อนด้วย มันจะได้อ่านค่าล่าสุด (สำหรับคนที่พิมพ์ต่อเนื่องลงมาเลย)
ต่อไปเราจะทำให้เป็นตัวเลข ดูสิว่าจะเป็นยังไง 
ตัวอย่าง

void main() {
//dynamic
dynamic tmp11 = "EXPERT" ;
print("tmp11: $tmp11 is ${tmp11.runtimeType}");
tmp11 = 9999;
//print("tmp11: $tmp11 is ${tmp11.runtimeType}"); //
//print("${tmp11.length}"); //
//print("${tmp11.catcatcat}"); //
Object tmp222 = "TUTOR";
print("tmp222: $tmp222 is ${tmp11.runtimeType}");
tmp222 = 7777;
print("tmp222: $tmp222 is ${tmp11.runtimeType}");
}

ผลลัพธ์

tmp11: EXPERT is String
tmp222: TUTOR is int
tmp222: 7777 is int

ตอนนี้type เราจากตัวแปรที่เป็นobjectเนี่ยก็จะเป็นตัวเลข คือ 7777    ก็เริ่มสงสัยว่ามันก็เหมือนกับ dynamic  นี่น่า ถูกต้องเเล้ว มันเริ่มเหมือนdynamic แต่ถ้าเรามาทำการprint ดู ของเก่าdynamic ของเรามันเป็น str เราสามารถprint ความยาว เเต่ถ้าเราเป็นรูปแบบopject เรามาดูกัน  

     ตรงนี้มันจะฟ้อง error เนื่องจากตรงนี้มันเป็น object มันจะไม่รู้ว่ามีโซลูชั่นตรงนี้อยู่ มันจะตอนเรียกใช้พวกฟังก์ชัน มันจะเกิดerror ทันที ซึ่งต่างจากdynamic มันจะไม่ฟ้อง error ใดใดเลย อันนี้ก็คือให้เห็นภาพความเเตกต่างระหว่าง 2 ตัว นี้ เบื้องต้นค่าเปลี่ยนแปลงค่าเเล้วแต่มันจะไม่รู้จัก tmp ของ object นั่นเอง 

อีกเรื่องนึงที่เราจะพูดถึงเป็นเรื่องที่น่าสนใจมาก เราจะโฟกัสเรื่อง dynamic นิดนึง
ตัวอย่าง
เราจะเปลี่ยนแปลงค่าคงที่  ตอนนี้ tmp33 ก็จะเป็น 1,000 แล้วทำการปรินท์ค่า (พิมพ์บรรทัดต่อมาได้เลย)

Object tmp222 = "TUTOR";
print("tmp222: $tmp222 is ${tmp11.runtimeType}");
tmp222 = 7777;
print("tmp222: $tmp222 is ${tmp11.runtimeType}");
dynamic tmp33 = 500;
tmp33 = tmp33 + 500;
print("tmp33: $tmp33");

ผลลัพธ์

tmp11: EXPERT is String
tmp222: TUTOR is int
tmp222: 7777 is int
tmp33: 1000

เนื่องจากตัวแปรตัวนี้มีตัวเลข แล้วเราก็ตัวแปรเลขมาบวกกัน เเต่เราดันไปยืมมันมา  เราทำแบบนี้
ตัวอย่าง

dynamic tmp33 = 500;
tmp33 = tmp33 + 500;
print("tmp33: $tmp33");
tmp33 = tmp33 + "500";
}

ผลลัพธ์

      เห็นไหมตัวแปรdynamic มันไม่ฟ้อง error ใดๆ นี่คือสิ่งที่น่ากลัว สำหรับคนที่ใช้เเบบไม่ระวัง ซึ่งมาพบerror อีกทีตอนรัน นี่คือการใช้ตัวแปรdynamic  เรื่องสุดท้ายแล้ว ตัวแปรถ้าเราไม่ทำการระบุค่าให้มัน 
ตัวอย่าง

int tmp44;
bool tmp55;
String tmp66;
print("$tmp44, $tmp55, $tmp66");
}

ผลลัพธ์

tmp11: EXPERT is String
tmp222: TUTOR is int
tmp222: 7777 is int
tmp33: 1000
null, null, null

ถ้าเราไม่ระบุค่าให้มัน  ตัวแปรพวกเนี้ยจะมีค่า null หมดเลย ก็คือค่าว่างนั่นเอง สำหรับบทนี้เราก็ได้เรียนรู้ถึงข้อเเตกต่างกันเเล้ว เราพยายามเช็คกับเรื่องพวกนี้กันด้วย เรียนรู้กันต่อในบทหน้าเลย 



ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

Python

L16 PYTHON SIMPLE ARITHMETIC
L40 PYTHON TUTORIAL INTRO
L41 PYTHON GETTING STARTED
L42 PYTHON SYNTAX
L43 PYTHON COMMENTS
L44 PYTHON VARIABLES
L45 PYTHON DATATYPE
L46 PYTHON NUMBERS
L47 PYTHON CASING
L48 PYTHON STRINGS
L49 PYTHON BOOLEANS
L50 PYTHON OPARETORS
L51 PYTHON LISTS
L52 PYTHON TUPELS
L53 PYTHON SETS
L54 PYTHON DICTIONARY
L55 PYTHON IF ELSE
L56 PYTHON WHILE LOOP
L57 PYTHON FOR LOOP
L58 PYTHON FUNCTION
L59 PYTHON LAMBDA
L60 PYTHON ARRAYS
L61 PYTHON CLASSSES OBJECTS
L62 PYTHON INHERITANCE
L63 PYTHON ITERATORS
L63 PYTHON SCOPE
L64 PYTHON MODULES
L65 PYTHON DATETIME
L66 PYTHON JSON
L67 PYTHON REGEX
L68 PYTHON PIP
L69 PYTHON TRY EXCAPE
L70 PYTHON USER INPUT
L71 PYTHON FILE OPEN
L73 PYTHON STRING FORMATTING
L74 PYTHON READ FILE
L75 PYTHON WRILE CREATE FILE
L76 PYTHON DELETE FILE
L90 PYTHON POISSON DISTRIBUTION
L90 PYTHON RANDOM INTRODUCTION
L91 PYTHON CHI SQUARE DISTRIBUTION
L91 PYTHON EXPONENTIAL DISTRIBUTION
L92 PYTHON RAYLEIGH DISTRIBUTION
L93 PYTHON PARETO DISTRIBUTION
L94 PYTHON ZIPF DISTRIBUTION
L96 PYTHON RANDOM PERMUTATIONS
L97 PYTHON SEABORN
L98 PYTHON NORMAL DISTRIBUTION
L99 PYTHON DISTRIBUTION
L99 PYTHON LOGISTIC DISTRIBUTION
L99 PYTHON MULTINOMIAL DISTRIBUTION
L99 PYTHON NUMPY SPLITTING ARRAY
L99 PYTHON NUMPY UFUNCS
L99 PYTHON UNIFORM DISTRIBUTION
LM60PYTHON BUILT IN FUNCTIONS
LM61PYTHON STRING METHODS
LM62PYTHON LIST ARRAY METHODS
LM63PYTHON DICTIONARY METHODS
LM64PYTHON TUPLE METHODS
LM65PYTHON SET METHODS
LM66PYTHON FILE METHODS
LM67PYTHON KEYWORD
LM68PYTHON BUILT IN EXCAPTION
LM69PYTHON RANDOM MODULE
LM70PYTHON MATH MODULE
LM70PYTHON REQUSTS MODULE
LM72PYTHON CMATH MODULE
LM73PYTHON HOWTO REMOVE DUPLICATES FROM A PYTHON LIST
LM74PYTHON HOW TO REVERSE A STRING IN PYTHON
LM75PYTHON HOW TO ADD TWO NUMBERS IN PYTHON
LM95PYTHON RANDOM DATA DISTRIBUTION


แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา