Number & String

ตัวเลข กับข้อความ

ตัวเลข

ตัวแปรชนิดตัวเลขที่ใช้ใน Swift ค่อนข้างจะเหมือนกับภาษาอื่น คือ

Int แทน interger หรือจำนวนเต็ม

Int ในภาษานี้จะเป็นแบบ 64 bit หรือ 32 bit ขึ้นอยู่กับ platform และใน iOS จะต้องระวังในกรณีที่มีการใช้ตัวเลขขนาดใหญ่ เช่น ใน iPhone รุ่นเก่าที่เป็น 32 bit การใช้ Int จะเป็นแบบ 32 bit ซึ่งอาจจะ overflow ได้

บางครั้งเราจึงจะต้องระบุชัดเจนว่า Int32 หรือ Int64 ไปเลยเพื่อความปลอดภัย

iPhone รุ่นสุดท้ายที่เป็น 32 bit คือ iPhone 5C

UInt แทน Unsigned integer

Double แทนเลขที่มีทศนิยมเก็บแบบ 64 bit

Float ก็แทนเลขทศนิยมเช่นเดียวกับ Double แต่เก็บแบบ 32 bit

เราสามารถใช้ _ ช่วยในการเขียนค่าตัวเลขได้เพื่อช่วยให้เราสามารถอ่านได้ง่ายขึ้น แต่ไม่มีผลต่อการทำงาน เช่น

var money = 10_000_000

ในการ casting ค่า เราสามารถทำแบบนี้ได้

let amount = 20.5
let number = Int(amount)
let rounded = Int(amount.rounded())

ข้อความ

สำหรับข้อความเราจะใช้ตัวแปรประเภท String ในการเก็บค่า โดยข้อความที่เก็บจะอยู่ภายใต้เครื่องหมาย " เช่นที่เราเขียนกันไปแล้ว

let name = "pop"

ในกรณีที่เราต้องการเขียนแบบหลายบรรทัดเราสามารถเขียนได้โดยใช้ """ แทน เช่น

let message = """
This is multiline message
without to concat multiple string
but content must begin on new line 
"""

เราสามารถพิมพ์ออกมาดูที่ console ได้ด้วยคำสั่ง print

print("Hello, world!")
print(name)

String สามารถนำมาต่อกันด้วย + ได้เลย

print("Hello, " + name)

เราสามารถนำตัวแปรมาฝังไว้ในข้อความโดยใส่ตัวแปรภายใต้ \() แบบนี้เลยก็ได้

print("Hello, \(name).")

หรือใน multi-line string แบบนี้

let quotation = """
I said "Hello, \(name)."
"""

แต่สิ่งที่ String ใน Swift ไม่เหมือนภาษาอื่นคือ เราไม่สามารถอ้างถึง index Character ในข้อความด้วย Int แบบที่เราใช้ใน Array ได้ เช่นตัวอย่างข้างล่างนี้จะ Error

let char = name[1]
// 'subscript(_:)' is unavailable

ใน Swift เราจะต้องใช้ Type String.Index ในการอ้าง ด้วยโค้ดแบบนี้

let index = name.index(name.startIndex, offsetBy: 1)
let char = name[index]
// char = "o"

นอกจากนี้เรายังสามารถหาความยาวของข้อความได้ด้วย property count และตรวจสอบได้ว่าข้อความว่างหรือไม่ด้วย isEmpty

let nameLength = name.count
let isNameEmpty = name.isEmpty

เราสามารถเปลี่ยนตัวเลขเป็นข้อความได้แบบง่าย ๆ แบบนี้

let cost = "$" + String(rounded)

ในกรณีซับซ้อนเราสามารถใช้ NumberFormatterในการแปลงค่าได้

let formatter = NumberFormatter()
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2

formatter.string(from: 234.456)

อ่านเพิ่มเติมได้ที่ Apple NumberFormatter

Last updated