สอน Swift ตอนที่ 4.7 Control Transfer Statements คำสั่ง Labeled Statements

สอน Swift ตอนที่ 4.7 Control Transfer Statements คำสั่ง Labeled Statements

Labeled Statements คือการ Mark คำสั่งสามารถใช้ได้ทั้ง Loops หรือ Conditions ถูกนำมาใช้ในกรณีที่มีการเขียนที่เงื่อนไขที่ซับซ้อน

Sep 17, 2016

แก้ไขล่าสุด มีผู้อ่าน 1,489  |  PROGRAMMING SWIFT

การเขียนโปรแกรมในภาษา Swift เราสามารถเขียน Loops และคำสั่งเงื่อนไข if else หรือ switch case ซ้อนกันหลายๆ ชั้น เพื่อให้โปรแกรมทำงานตามที่เราต้องการ การใช้ break หรือ continue แบบปกติ จะมีผลกับ Loops หรือเงื่อนไข ที่อยู่ใกล้คำสั่งนั่นที่สุด แต่บางทีเราอาจจะอยากออกจาก Loop ด้านนอกสุดหรือจบการทำงานเลย Labeled Statements สามารถช่วยคุณได้ 

 

Labeled Statements คือการ Mark คำสั่งสามารถใช้ได้ทั้ง Loops หรือเงื่อนไขมีโครงสร้างดังนี้

label name : while condition {
   statements
}

เมื่อเรา Mark ด้วย Labeled Statements แล้ว เราสามารถใช้ break หรือ continue ออกจาก Loops หรือทำงานรอบต่อไป ในจุดที่เรา Mark ไว้ได้ตามต้องการ ลองมาดูตัวอย่างกันครับ


 

ตัวอย่างการใช้งาน โปรแกรมเกมส์ Snakes and Ladders จาก Tutorial ของ Apple

 

เกมส์ Snakes and Ladders เป็นบอร์ดเกมส์ ที่เด็กๆ สมัยนี้คงไม่ค่อยได้เล่นกันแล้ว คนเคยเล่นผมคิดว่าอายุ 30+ แน่นอน เกมส์นี้เป้าหมายคือ ไปเดินทางไปให้ถึงจุดสุดท้ายของ บอร์ดเกมส์คือช่องที่ 25 ใครถึงก่อนเป็นคนชนะ โดยการเดินใช้วิธีการถอยลูกเต๋า ภายในบอร์ดเกมส์จะมีบันไดและงู ซึ่งเมื่อเราเดินไปตกที่ช่องบันไดจะทำให้เราข้ามไปอยู่ในช่องที่บันไดไปถึง ส่วนงูจะทำให้เราย้อนกลับมา 


 

ว่าแล้วก็เริ่มเขียนโปรแกรมสร้างบอร์ดเกมส์กันเลย

let finalSquare = 25
var board = [Int](repeating: 0, count: finalSquare + 1) // สร้างช่องในบอร์ดเกมส์
board[03] = +08; board[06] = +11; board[09] = +09; board[10] = +02 // บันได
board[14] = -10; board[19] = -11; board[22] = -02; board[24] = -08 // งู
var square = 0
var diceRoll = 0


gameLoop: while square != finalSquare {
    diceRoll += 1
    if diceRoll == 7 { diceRoll = 1 }
    switch square + diceRoll {
    case finalSquare:
        // เมื่อมาถึง finalSquare เกมส์จบ
        break gameLoop
    case let newSquare where newSquare > finalSquare:
        // ถ้าถอยเต๋าเกินกว่าช่องสุดท้ายก็ถอยใหม่
        continue gameLoop
    default:
        // เมื่อถอยเต๋าเสร็จ ก็เดินบนบอร์ดเกมส์
        square += diceRoll
        square += board[square]
    }
}
print("Game over!")

จุดสังเกตุคือ เราสามารถใช้ break, continue ตามด้วย labeled statement เพื่อทำงานกับ Loops ด้านนอกที่สุดได้ ถ้าไม่ใส่ labeled statement จะทำให้ break, continue จะทำให้ส่งผลกับ switch case ที่ครอบมันอยู่

 


แบ่งปัน

ชอบ +1

บันทึก

ฝากคำถาม คำแนะนำ ได้ที่

Facebook : Share.OlanLab.Com
LINE ID : @olanlab
อีเมล์ : olan@olanlab.com

หลักสูตร

สอน Swift สร้างแอพพลิเคชั่นบน IOS, macOS, tvOs, watchOs

Swift ภาษาเขียนแอพพลิเคชั่นที่ใช้งานง่าย แต่ทรงพลังออกแบบสร้างสรรค์โดย Apple เพื่อใช้สร้างแอพพลิเคชั่นสำหรับ IOS, Mac, Apple TV และ Apple Watch
Share คลังความรู้ด้านเทคโนโลยี สารสนเทศ นวัตกรรมคอมพิวเตอร์ สอนเขียนโปรแกรม Php Java Html CSS Javascript C C++ Objective-C และอื่นๆ บนระบบปฏิบัติการ Window Linux Unix CentOS IOS Android
โดยผู้เขียนที่มีความเชี่ยวชาญเฉพาะ ให้บริการพื้นที่สำหรับนักเขียนที่ต้องการแบ่งปันความรู้ พร้อมให้คำปรึกษาแก่ผู้ที่สนใจ โดยไม่เสียค่าใช้จ่าย