รู้จักกับ Control flow
1.Conditional statement ซึ่งทำการ execute กลุ่มของโค้ดตามเงื่อนไขต่างๆ เช่น ตามเงื่อนไขที่ให้มา ถ้าตรงตามเงื่อนไขให้แสดงผลว่าข้อมูลถูกต้อง ถ้าไม่ตรงตามเงื่อนไขให้แสดงข้อความแจ้งผลการผิดพลาด
1.1 if statement ใช้ evaluate เงื่อนไขที่มีจำนวนการแสดงผลลัพท์ที่ต่างกันไม่มาก
if (a) then b else c
ถ้า condition ใน a นั้นเป็นจริง b จะเกิดขึ้น
ถ้า condition ใน a ไม่เป็นจริง c จะเกิดขึ้น
สำหรับ condition นั้น operator ที่ใช้ได้ มีดังนี้ :-
| < | น้อยกว่า |
| <= | น้อยกว่าหรือเท่ากัน |
| > | มากกว่า |
| >= | มากกว่าหรือเท่ากัน |
| == | เปรียบเทียบว่าเท่ากัน |
| != | เปรียบเทียบว่าไม่เท่ากัน |
| === | เปรียบเทียบว่าเท่ากัน(memory) |
| !== | เปรียบเทียบว่าไม่เท่ากัน(memory) |
สำหรับ Boolean expression ที่สามารถใช้ใน condition ได้มีดังนี้ :-
| && | และ |
| || | หรือ |
| ! | ไม่ |
ตัวอย่างการใช้ if -then-else
let meltingPoint = 100 // Constant
var waterTemp = 60 // Variable
if ( waterTemp == meltingPoint ){ // ถ้าอุณหภูมิถึงจุดเดือด
print("Reach melting point")
}else{
print("Keep boiling")
}
ผลที่ได้คือ
Keep boiling
สำหรับ Ternary Operator ที่ใช้ได้
a ? b : c เป็น shortcut ของ if (a) then b else c
ตัวอย่าง condition ที่น่าสนใจเช่น
var b = 5 < 6
ถ้าขยายความจากด้านบนจะได้เป็น
var b:Bool = (5<6) //ซึ่งก็คือ var b:Bool = false
จากตัวอย่างข้างต้นจะเห็นได้ว่า การใส่ data type กำกับ และการใส่วงเล็บ จะป้องกันการสับสนในการอ่านโค๊ดได้
1.2 Switch ทำงานคล้ายกับ if-then-else แต่แทนที่จะพิจารณาเงื่อนไข(condition) เราอาศัยการเปรียบเทียบของค่านั้นๆ กับแต่ละรูปแบบ(pattern) ที่เราใช้เปรียบเทียบแล้วจึงทำการ execute โค๊ดตามเงื่อนไขที่ตรงกัน และมักจะใช้เมื่อ เงื่อนไขที่ใช้เปรียบเทียบนั้นมีหลายกรณี
switch( value ){
case someValue:
//do something
case someValue:
//do something
default:
//do something
}
ข้อควรจำ(***) การใช้ switch ใน swift นั้นอธิบายไว้ว่า switch จะมีประสิทธิภาพมากกว่าภาษาแนว c ภาษาอื่นตรงที่ ในแต่ละ case นั้นไม่จำเป็นต้องมี break เพื่อเป็นจุดบอกว่า ให้หยุดการกระทำการ ไม่กระทำการใน case ต่อๆไป เพราะใน swift นั้นในแต่ละ case จะจบการกระทำการในกลุ่มโค้ดของตัวเองเลย จึงทำให้เป็นการป้องกันการเขียนโค้ดแล้วลืมใส่ break อันนี้ก็แล้วแต่ความเห็นแต่ละคนนะว่าชอบแบบนี้รึเปล่า
ตัวอย่างเช่น
var day:Int = 3
switch (day){
case 1:
print("Monday")
case 2:
print("Tuesday")
case 3:
print("Wednesday") // บรรทัดนี้จะถูกแสดงผลออกมา
case 4:
print("Thursday")
case 5:
print("Friday")
case 6:
print("Saturday")
case 7:
print("Sunday")
default:
print("Wrong input")
}
ผลลัพท์ที่ได้คือ
Wednesday
1.3 guard อันนี้คาดว่าน่าจะเป็นตัวใหม่ เพราะไม่เคยได้ยินชื่อเหมือนกัน guard ทำงานคล้ายกับ if ตรงที่ทำการพิจารณาเงื่อนไข(condition) ที่เป็น boolean เราจะใช้ guard ก็ต่อเมื่อต้องการจะพิสูจน์ว่า เงื่อนไขนั้นเป็นจริงแล้วจึงจะทำการกระทำการ(execute) โค๊ดส่วนที่อยู่หลังบล๊อก {} ต่อ(หากไม่เข้าใจให้ตามไปดูตัวอย่างด้านล่าง) และ guard นั้นจะมาพร้อม else เสมอ จะทำการ(execute) โค๊ดใน else ก็ต่อเมื่อ ไม่ตรงตามเงื่อนไขตามที่ระบุไว้
guard condition else{
// do something
}
ตัวอย่างการใช้ guard
// define function
func addNewStudent(student:[String:String]){
// Check if student name is valid
guard let name = student["name"] else {
print("Invalid student name")
return
}
print("Valid student")
// Check if student email is valid
guard let email = student["email"] else{
print("Invalid email")
return
}
// Send
print("Sending email to student name:\(name) at \(email)")
}
// Execute function
var student = ["name":"David", "email":"xyz@booboohome.com"]
addNewStudent(student)
ผลลัพท์ที่แสดง
Valid student Sending email to student name:David at xyz@booboohome.com
2. Loops ใช้กับ flow ที่ต้องการกระทำซ้ำๆ
2.1 For Loop
For-in : Loop in range ใน swift สามารถกระทำซ้ำๆ ได้จาก array, dictionary, range, string, charatersใน string
for index in start...end {
// do something
}
Loop with increment or decrement
for i=5; i<10; i++ {
// do something
}
Loop with dictionary
let studentGrades = ["David":"A", "Peter":"C", "John":"B"]
for(name, grade) in studentGrades{
print("\(name) get grade \(grade)")
}
ผลที่ออกมาคือ
John get grade B David get grade A Peter get grade C
ข้อควรจำ(***) จะเห็นว่าลำดับการแสดงผลของ dictionary จะไม่เรียงลำดับตามที่เรากำหนดค่าไปให้ เนื่องจาก dictionary เป็นการเก็บข้อมูลแบบไม่เรียงลำดับ
2.2 While loop มักใช้กับกรณีที่เราไม่รู้จำนวณรอบของการพิจารณาซ้ำๆ โดยจะพิจารณาเงื่อนไขที่กำหนดและพิจารณาไปเรื่อยๆ จนตรงตามเงื่อนไขที่กำหนด จึงจะกระทำการในบล๊อค {} ในswift มี while loop สองแบบ คือ while และ repeat while
while waterTemp < meltingPoint{
// keep boiling the water
}
Repeat {
// boiling the water
}
while waterTemp < meltingPoint
วันต่อไป==>รู้จักกับ Collection
