# Constants Variable (ตัวแปร)

## Basic (พื้นฐาน)

ในภาษา Swift ซึ่งเป็นภาษาที่ใช้ในการพัฒนาแอปพลิเคชันบน iOS นั้น การจัดการกับข้อมูลสามารถทำได้ผ่าน **ค่าคงที่ (Constants)** และ **ตัวแปร (Variables)** โดยทั้งสองมีบทบาทสำคัญในการเขียนโปรแกรมที่มีประสิทธิภาพและปลอดภัย

### ค่าคงที่ (Constants)

ค่าคงที่คือค่าที่ถูกกำหนดครั้งเดียวและไม่สามารถเปลี่ยนแปลงได้ตลอดการทำงานของโปรแกรม ใน Swift เราสามารถประกาศค่าคงที่โดยใช้คีย์เวิร์ด `let` การใช้ค่าคงที่ช่วยให้โปรแกรมมีความปลอดภัยมากขึ้น เนื่องจากป้องกันการเปลี่ยนแปลงค่าที่ไม่คาดคิด

**ตัวอย่าง:**

```swift
let pi = 3.14159
```

ในตัวอย่างนี้ `pi` ถูกกำหนดเป็นค่าคงที่ที่มีค่า 3.14159 และไม่สามารถเปลี่ยนแปลงได้

### ตัวแปร (Variables)

ตัวแปรคือค่าที่สามารถเปลี่ยนแปลงได้ตามความต้องการของโปรแกรม ใน Swift เราสามารถประกาศตัวแปรโดยใช้คีย์เวิร์ด `var` การใช้ตัวแปรเหมาะสำหรับสถานการณ์ที่ค่าของข้อมูลมีแนวโน้มที่จะเปลี่ยนแปลงระหว่างการทำงานของโปรแกรม

**ตัวอย่าง:**

```swift
var counter = 0
counter = 1
```

ในตัวอย่างนี้ `counter` ถูกกำหนดเป็นตัวแปรที่เริ่มต้นด้วยค่า 0 และสามารถเปลี่ยนแปลงเป็นค่า 1 ได้

**สรุป**

* ใช้ `let` สำหรับค่าที่ไม่ต้องการให้เปลี่ยนแปลงหลังจากกำหนดแล้ว
* ใช้ `var` สำหรับค่าที่คาดว่าจะมีการเปลี่ยนแปลงในภายหลัง

การเลือกใช้ค่าคงที่หรือการใช้ตัวแปรอย่างเหมาะสมจะช่วยให้โค้ดของคุณมีความชัดเจนและลดข้อผิดพลาดที่อาจเกิดขึ้นได้

### การตั้งชื่อตัวแปร

เมื่อเราเลือกได้แล้วว่าจะใช้ var หรือ let เราสามรถสร้างชื่อตัวแปรที่เราอยากได้ โดยที่จะมีเงื่อนไขสำหรับชื่ออยู่นิดหน่อย ได้แก่ มีช่องว่าง (**whitespace characters**), เครื่องหมายทางคณิตศาสตร์ (**mathematical symbols**), ลูกศร (**arrows**), อักขระ Unicode สำหรับใช้งานส่วนตัว (**private-use Unicode scalar values**), หรืออักขระที่ใช้วาดเส้นและกล่อง (**line- and box-drawing characters**) ได้\
นอกจากนี้ ยังไม่สามารถขึ้นต้นด้วยตัวเลข (**number**) ได้ แต่สามารถมีตัวเลขอยู่ภายในชื่อได้

```swift
// Good
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"

// Bad
let _test = "Hello World"
let 12words = "Name of wordings"
let +variable = 10
```

### การแสดงผลในหน้า console

คำสั่งแรกๆ ที่เหล่านักพัฒนาจะต้องรู้ในทุกๆภาษาคือ print เป็นคำสั่งที่ใช้ในการโชว์ผลลัพธ์ หรือ เขียนข้อความลงใน console เพื่อการ debug

```swift
// Print string
print("Hello, Swift!")

// Print with parameter
let name = "John"
print(name)

// Print combine both of string and parameter
print("Hello, \(name)! Welcome to Swift programming."
```

### การใช้ Comment

เพื่อเพิ่มข้อความที่ไม่ถูก execute ในโค้ดของคุณ เช่น บันทึกหรือเตือนความจำให้ตัวเอง \
**comments** จะถูก Swift compiler มองข้ามเมื่อทำการ compile โค้ด

ตัวอย่างการใช้ **comments** ใน Swift:

```swift
// This is a single-line comment (English)
// นี่คือตัวอย่างคอมเมนต์บรรทัดเดียว (ภาษาไทย)
print("Hello, Swift!") // Prints a string to the console (แสดงข้อความในคอนโซล)

/* 
   This is a multi-line comment.
   You can use it for longer explanations. (English)

   นี่คือตัวอย่างคอมเมนต์หลายบรรทัด
   สามารถใช้เพื่ออธิบายโค้ดยาว ๆ ได้ (ภาษาไทย)
*/
let name = "John" // Declare a variable to store a name (ประกาศตัวแปรเก็บชื่อ)

// Printing a message with a variable
// แสดงข้อความพร้อมตัวแปร
print("Hello, \(name)! Welcome to Swift programming.") 
```

* ใช้ `//` สำหรับ **single-line comments**
* ใช้ `/* ... */` สำหรับ **multi-line comments**
* **comments** ไม่ส่งผลต่อการทำงานของโปรแกรม แต่ช่วยให้โค้ดอ่านง่ายขึ้น! 🚀

### การใช้ Semicolons

ถ้านักพัฒนาที่ใช้ภาษาเก่าๆหน่อย น่าจะคุ้นเคยกับการใช้ **Semicolon (\`;\`)** ในการจบประโยคคำสั่ง 1 บรรทัด

แต่ในภาษา Swift นั้นไม่เหมือนกับภาษาเก่าๆ เราจะใช้ Semiconlon สำหรับคนที่ต้องการทำ 2 คำสั่งใน 1 บรรทัด

```swift
let cat = "🐱"; print(cat)
// Prints "🐱"
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lesson.longruncode.com/basic-swift-programming/constants-variable.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
