28 August 2020

Learn to Code 1 - บทที่ 2 Functions

Functions

ฟังก์ชันคืออะไร?

พูดง่ายๆ ก็หมายถึงการรวมชุดคำสั่งไว้เพื่อเรียกใช้หลายๆ ครั้ง

พอถึงบทนี้ Swift Playgrounds ก็ได้ที ทำเป็นสร้างเรื่องว่า อ้าว! ไม่มีคำสั่งหันขวาและให้เราคิดคำตอบว่าจะทำยังไง?? เหอะๆ พอทำแบบฝึกหัดต่อไปเรื่อยๆ ก็พบว่าไม่ใช่ไม่มีแต่ถูกปิดเอาไว้เพราะคนคิดแบบเรียนจงใจสร้างสถานการณ์เพื่อให้เราเติบโต?!?



อย่างไรก็ตาม เมื่อไม่มีคำสั่งหันขวา เราก็แค่หันซ้าย 3 ครั้ง เท่านั้นเอง!

turnLeft()
turnLeft()
turnLeft()

ซักพักแบบทดสอบเริ่มทำให้รู้สึกเมื่อย อะไรจะหันขวาบ่อยขนาดนั้น นี่ถ้าต้องหันขวาซักร้อยครั้ง ก็ต้องพิมพ์คำสั่ง turnLeft() ตั้ง 300 ครั้งเลยสิ! แต่ว่า... Swift บอกไม่เป็นไร เรามารวมคำสั่งหันซ้าย 3 อัน และสร้างเป็นคำสั่งใหม่ชื่อ turnRight() กันเถอะ!


func turnRight() { 
  turnLeft()
  turnLeft() 
  turnLeft() 
{


ไม่ต่างจากภาษาอังกฤษ ภาษาไทย ภาษา Swift ก็มีไวยากรณ์เช่นกัน!!

ไวยากรณ์ คือ โครงสร้างพื้นฐานของประโยค

โครงสร้าง คือ การวางโครง เพื่อสร้างบางอย่างให้เกิดขึ้น



โครงสร้างของ Function

func + ชื่อฟังก์ชัน + เครื่องหมายวงเล็บ () + เครื่องหมายวงเล็บปีกกาและชุดคำสั่ง { ชุดคำสั่ง }


func ย่อมาจากคำว่า function

ชื่อฟังก์ชัน ตั้งชื่ออะไรก็ได้ที่ไม่ซ้ำกับสิ่งที่มีอยู่ Swift แนะนำให้เราตั้งชื่อที่สื่อความหมายว่าฟังก์ชันนี้มีจุดประสงค์ใด

     การตั้งชื่อฟังก์ชัน

     Camel Case คือ รูปแบบการตั้งชื่อฟังก์ชันเหมือนลักษณะเนินของหลังอูฐ ถ้าชื่อมีเพียงหนึ่งคำ เช่น turn ให้เขียนด้วยตัวอักษรเล็กทั้งหมด ถ้าชื่อมีหลายคำรวมกัน ให้เรียงต่อกันโดยไม่มีช่องว่าง ตั้งแต่คำที่สองเป็นต้นไปให้ขึ้นต้นคำด้วยตัวอักษรใหญ่ เรียกการเขียนในรูปแบบนี้ว่า คาเมลเคส (Camel Case)

     ตัวอย่างชื่อฟังก์ชัน

  • หันขวา turnRight
  • หันขวาแล้วเดินหน้า turnRightAndMoveForward


เครื่องหมายวงเล็บ () ในบทนี้ ให้ใส่วงเล็บเปล่าๆ ไม่ต้องระบุอะไร ใน Learn to Code 2 จะมีบทเรียนสอนการระบุข้อกำหนดในวงเล็บอีกครั้งหนึ่ง

{ ชุดคำสั่ง } เขียนชุดคำสั่งในวงเล็บปีกกา



ดังนั้น อธิบายฟังก์ชันด้านล่างได้ว่า

ตัวอย่างที่ 1

func turnRight()
  turnLeft()
  turnLeft() 
  turnLeft() 
{

ชื่อฟังก์ชัน คือ turnRight แปลว่า หันขวา

การเรียกใช้ ให้เขียนว่า turnRight()

การทำงาน ฟังก์ชันนี้สั่งให้หันซ้าย turnLeft() ทั้งหมด 3 ครั้ง



ตัวอย่างที่ 2

func turnAroundAndMoveForward()
  turnLeft()
  turnLeft() 
  moveForward()
{

ชื่อฟังก์ชัน คือ turnAroundAndMoveForward แปลว่า กลับหลังหันและเดินหน้า

การเรียกใช้ ให้เขียนว่า turnAroundAndMoveForward() 

การทำงาน ฟังก์ชันนี้สั่งให้หันซ้าย turnLeft() 2 ครั้ง เพื่อกลับหลังหัน แล้วเดินหน้า moveForward() 1 ก้าว 



ตัวอย่างที่ 3

func turnAroundMoveForwardAndTurnRight() { 
  turnAroundAndMoveForward()
  turnRight() 
{

ชื่อฟังก์ชัน คือ turnAroundMoveForwardAndTurnRight แปลว่า กลับหลังหัน เดินหน้า และหันขวา

การเรียกใช้ ให้เขียนว่า turnAroundMoveForwardAndTurnRight()

การทำงาน ฟังก์ชันนี้ไปเรียกใช้ฟังก์ชันชื่อ turnAround ในตัวอย่างที่ 2 เมื่อทำงานตามชุดคำสั่งแรกเสร็จ จึงเรียกใช้ฟังก์ชันชื่อ turnRight() ในตัวอย่างที่ 1 เป็นลำดับสุดท้าย


รูปแบบที่มีฟังก์ชันอื่นซ้อนอยู่ข้างใน เรียกว่า เนส (Nest) หรือ เนสติ้งแพทเทิร์น (Nesting pattern) 

Nest แปลว่า การสร้างรัง ซ้อนกัน คือการวางสิ่งอื่นซ้อนข้างในสิ่งหนึ่งนั่นเอง





ขอบคุณภาพจาก Swift Playgrounds

-- ดีบี --