Introduction to Swift
มาเขียนเรื่องโครต Basic ที่ต้องรู้สำหรับภาษาใหม่จาก Apple อย่าง Swift กันดีกว่า :)
จะเริ่มเขียน Swift ทำยังไง ? คุณจะต้องมี Apple Developer Account แล้วไปโหลด Xcode 6 Beta มาจาก Developer Portal เมื่อโหลดมาแล้วก็โยนใส่ Application Folder ให้เรียบร้อย เมื่อเปิด Xcode 6 ขึ้นมาก็จะพบกับหน้าจอต้อนรับ ให้เลือก Get Started with a Playground ได้เลย
เมื่อเปิด Playground แล้ว ก็จะได้หน้าจอแบบนี้ โดยที่ Code จะถูก Execute ที่ด้านข้างเลย ตัวอย่างเช่น เมื่อเราประกาศตัวแปร ดูจากในภาพ :)
มาเริ่มกันเลย
Variables & Constant
ในทุกๆ ภาษาโปรแกรมที่เราเคยเจอ เรื่องแรกๆ ของบทเรียนคงหนีไม่พ้นการประกาศตัวแปร เพื่อชี้ไปหาข้อมูลอะไรสักอย่าง โดยใน Swift จะแบ่งเป็น 2 แบบคือ Variable (ตัวแปร) และ Constant (ค่าคงที่) ผมคงไม่ต้องบอกนะว่ามันต่างกันยังไง
จะเห็นว่าเราสามารถที่จะบอกได้ด้วยว่า Type ของตัวแปรที่เราจะประกาศจะเป็นอะไร แต่ถ้าเราประกาศตัวแปรโดยกำหนดค่าเริ่มต้นให้มันทันที Swift จะสามารถรู้ได้เองด้วยว่า Type นั้นเป็นอะไร สิ่งนี้เรียกว่า "Type Inference"
Data Types and Strings
หนึ่งในชนิดตัวแปรที่สำคัญสำหรับทุกภาษาก็คือ สายอักขระ นี่แหละ เพราะในโปรแกรมสิ่งที่เราพบเจอมากที่สุดก็คือ "ข้อความ" นั่นแหละ โดย String ใน Swift นั้นสามารถที่จะนำมาต่อกันได้ด้วยเครื่องหมาย "+"
หรืออีกวิธีคือความสามารถที่เรียกว่า String Interpolation โดยจะใช้ \(someVariable) ในการ expose ตัวแปรชนิดใดๆ ออกมา
ตัวแปรชนิดอื่นๆ นอกจาก String ก็มี Int, Float, Double, Bool โดยสิ่งที่ต้องรู้ไว้ก็คือ ถ้าเราประกาศตัวแปรและกำหนดค่าเริ่มต้นเป็นทศนิยม Swift จะทำการ Inference ให้เป็น Double ไม่ใช่ Float ซึ่ง Double และ Float ต่างกันที่หน่วยความจำที่ใช้ และขอบเขตของเลขทศนิยม
Collection Types
ใน Swift นั้น Collection Types มีอยู่ 2 อย่างนั่นคือ Array และ Dictionary
โดยที่ Array ใน Swift ก็เหมือนกับ Array ทั่วไป และมีความสามารถ Type Inference เช่นกัน
วิธีการเข้าถึง ก็ยังคงเข้าถึงผ่าน Subscripting Syntaxโดย Index จะเริ่มที่ 0 ไปจนถึง N-1 (N = ขนาดของ Array) นอกจากนั้น เรายังเข้าถึงผ่าน Range ได้ด้วย โดยที่ ".." และ "..." มีความหมายต่างกันยังไงลองสังเกตุดูนะ
Dictionary ไม่มีอะไรมาก เพียงแค่เปลี่ยนเครื่องในการสร้างจาก { } (Curry Braces) เป็น [ ] (Square Braces) เท่านั้นเอง วิธีการเข้าถึงและแก้ไขค่า ยังทำผ่าน Subscripting Syntax
Control Flow
if-statement เหมือนกับภาษาอื่นทั่วไป แต่ไม่จำเป็นต้องใส่ () เพื่อครอบเงื่อนไขอีกแล้ว แต่จะต้องครอบคำสั่งภายในเงื่อนไขด้วย {} เสมอ
Iteration Statement
ยังคงมี Loop แบบในภาษาทั่วไปอย่าง While, Do While, For ให้ใช้
ที่ค่อนข้างจะพิเศษยกเว้นอันแรก (forin หรือชื่อทางการในภาษา Objective-C คือ Fast Enumerator) ก็จะมี enumerate function แบบ Python และการวนโดยใช้ Range หรือการใช้ตัวแปรประเภท Tuple เพื่อแสดงค่า key, value ของ Dictionary
เรื่องของ Range ที่จะต้องรู้คือ Range มี 2 แบบคือ ".." และ "..." โดยที่
Switch จะต่างออกจากไปจาก Objective-C อย่างแรกคือ เราสามารถนำตัวแปรชนิดใดก็ได้มาเป็นเงื่อนไขใน Switch ไม่ว่าจะเป็น String, Int, Double หรือแม้กระทั่ง Object และ ใน Swift เราควรจะต้องเขียน Default Case เสมอ (ยกเว้นในกรณีที่ใช้การเช็ค Enum และสามารถมั่นใจได้ว่าค่าที่นำมาเช็คจะไม่หลึดแน่นอน) และไม่ต้องเขียน break อีกต่อไป โดย Swift จะการันตีเรื่องไม่มีการเกิดสิ่งที่เรียกว่า Implicit Fallthough อย่างแน่นอน (หมายความว่า เมื่อเข้า case ไหนแล้ว จะจบการทำงานของ Switch ชุดนั้นทันที)
และวิธีการเขียน case ก็มีหลายแบบด้วยกัน ลองดูนะครับ สะดวกกว่าที่เคยเขียนมาเยอะเลย
Function
การประกาศก็จะมีการประกาศแบบฟังก์ชั่นในภาษาอื่นทั่วไป (ที่ไม่ใช่ Objective-C) และความพยายามที่จะทำให้มัน Descriptive แบบ Objective-C โดยในการประกาศจะใช้ keyword คำว่า func
เรื่องพื้นฐานเกี่ยวกับภาษา Swift ก็คงจะมีเท่านี้ล่ะนะ :) ไว้นึกอะไรออกจะมาเติมให้
จะเริ่มเขียน Swift ทำยังไง ? คุณจะต้องมี Apple Developer Account แล้วไปโหลด Xcode 6 Beta มาจาก Developer Portal เมื่อโหลดมาแล้วก็โยนใส่ Application Folder ให้เรียบร้อย เมื่อเปิด Xcode 6 ขึ้นมาก็จะพบกับหน้าจอต้อนรับ ให้เลือก Get Started with a Playground ได้เลย
เมื่อเปิด Playground แล้ว ก็จะได้หน้าจอแบบนี้ โดยที่ Code จะถูก Execute ที่ด้านข้างเลย ตัวอย่างเช่น เมื่อเราประกาศตัวแปร ดูจากในภาพ :)
มาเริ่มกันเลย
Variables & Constant
ในทุกๆ ภาษาโปรแกรมที่เราเคยเจอ เรื่องแรกๆ ของบทเรียนคงหนีไม่พ้นการประกาศตัวแปร เพื่อชี้ไปหาข้อมูลอะไรสักอย่าง โดยใน Swift จะแบ่งเป็น 2 แบบคือ Variable (ตัวแปร) และ Constant (ค่าคงที่) ผมคงไม่ต้องบอกนะว่ามันต่างกันยังไง
จะเห็นว่าเราสามารถที่จะบอกได้ด้วยว่า Type ของตัวแปรที่เราจะประกาศจะเป็นอะไร แต่ถ้าเราประกาศตัวแปรโดยกำหนดค่าเริ่มต้นให้มันทันที Swift จะสามารถรู้ได้เองด้วยว่า Type นั้นเป็นอะไร สิ่งนี้เรียกว่า "Type Inference"
Data Types and Strings
หนึ่งในชนิดตัวแปรที่สำคัญสำหรับทุกภาษาก็คือ สายอักขระ นี่แหละ เพราะในโปรแกรมสิ่งที่เราพบเจอมากที่สุดก็คือ "ข้อความ" นั่นแหละ โดย String ใน Swift นั้นสามารถที่จะนำมาต่อกันได้ด้วยเครื่องหมาย "+"
หรืออีกวิธีคือความสามารถที่เรียกว่า String Interpolation โดยจะใช้ \(someVariable) ในการ expose ตัวแปรชนิดใดๆ ออกมา
ตัวแปรชนิดอื่นๆ นอกจาก String ก็มี Int, Float, Double, Bool โดยสิ่งที่ต้องรู้ไว้ก็คือ ถ้าเราประกาศตัวแปรและกำหนดค่าเริ่มต้นเป็นทศนิยม Swift จะทำการ Inference ให้เป็น Double ไม่ใช่ Float ซึ่ง Double และ Float ต่างกันที่หน่วยความจำที่ใช้ และขอบเขตของเลขทศนิยม
Collection Types
ใน Swift นั้น Collection Types มีอยู่ 2 อย่างนั่นคือ Array และ Dictionary
โดยที่ Array ใน Swift ก็เหมือนกับ Array ทั่วไป และมีความสามารถ Type Inference เช่นกัน
วิธีการเข้าถึง ก็ยังคงเข้าถึงผ่าน Subscripting Syntaxโดย Index จะเริ่มที่ 0 ไปจนถึง N-1 (N = ขนาดของ Array) นอกจากนั้น เรายังเข้าถึงผ่าน Range ได้ด้วย โดยที่ ".." และ "..." มีความหมายต่างกันยังไงลองสังเกตุดูนะ
Dictionary ไม่มีอะไรมาก เพียงแค่เปลี่ยนเครื่องในการสร้างจาก { } (Curry Braces) เป็น [ ] (Square Braces) เท่านั้นเอง วิธีการเข้าถึงและแก้ไขค่า ยังทำผ่าน Subscripting Syntax
Control Flow
if-statement เหมือนกับภาษาอื่นทั่วไป แต่ไม่จำเป็นต้องใส่ () เพื่อครอบเงื่อนไขอีกแล้ว แต่จะต้องครอบคำสั่งภายในเงื่อนไขด้วย {} เสมอ
Iteration Statement
ยังคงมี Loop แบบในภาษาทั่วไปอย่าง While, Do While, For ให้ใช้
ที่ค่อนข้างจะพิเศษยกเว้นอันแรก (forin หรือชื่อทางการในภาษา Objective-C คือ Fast Enumerator) ก็จะมี enumerate function แบบ Python และการวนโดยใช้ Range หรือการใช้ตัวแปรประเภท Tuple เพื่อแสดงค่า key, value ของ Dictionary
เรื่องของ Range ที่จะต้องรู้คือ Range มี 2 แบบคือ ".." และ "..." โดยที่
- "a..b" จะหมายถึงช่วงตั้งแต่ a จนถึง b - 1 เช่น 1..10 คือช่วงของตัวเลขตั้งแต่ 1 - 9
- "a...b" จะหมายถึงช่วงตั้งแต่ a จนถึง b เช่น 1...10 คือช่วงของตัวเลขตั้งแต่ 1 - 10
Switch จะต่างออกจากไปจาก Objective-C อย่างแรกคือ เราสามารถนำตัวแปรชนิดใดก็ได้มาเป็นเงื่อนไขใน Switch ไม่ว่าจะเป็น String, Int, Double หรือแม้กระทั่ง Object และ ใน Swift เราควรจะต้องเขียน Default Case เสมอ (ยกเว้นในกรณีที่ใช้การเช็ค Enum และสามารถมั่นใจได้ว่าค่าที่นำมาเช็คจะไม่หลึดแน่นอน) และไม่ต้องเขียน break อีกต่อไป โดย Swift จะการันตีเรื่องไม่มีการเกิดสิ่งที่เรียกว่า Implicit Fallthough อย่างแน่นอน (หมายความว่า เมื่อเข้า case ไหนแล้ว จะจบการทำงานของ Switch ชุดนั้นทันที)
และวิธีการเขียน case ก็มีหลายแบบด้วยกัน ลองดูนะครับ สะดวกกว่าที่เคยเขียนมาเยอะเลย
Function
การประกาศก็จะมีการประกาศแบบฟังก์ชั่นในภาษาอื่นทั่วไป (ที่ไม่ใช่ Objective-C) และความพยายามที่จะทำให้มัน Descriptive แบบ Objective-C โดยในการประกาศจะใช้ keyword คำว่า func
เรื่องพื้นฐานเกี่ยวกับภาษา Swift ก็คงจะมีเท่านี้ล่ะนะ :) ไว้นึกอะไรออกจะมาเติมให้
Comments
Post a Comment