Rust Programming EP.2: Basic Syntax ฉบับสมบูรณ์

Rust Programming EP.2

สวัสดีครับ วันนี้เราจะมาเรียนรู้เรื่อง Basic Syntax ใน Rust Programming EP.2 กันต่อ หลังจากที่เราได้เรียนรู้เรื่อง Memory Management และ Stack ไปแล้วใน EP.1 วันนี้เราจะมาเจาะลึกเรื่องการประกาศตัวแปร, ค่าคงที่, Tuple, Array, ฟังก์ชัน, if/else, Loop, Collection, Hash Map, Struct, Module, Trait, Enum และ Closure เพื่อให้คุณเข้าใจพื้นฐานการเขียนโปรแกรม Rust ได้อย่างครบถ้วน

การประกาศตัวแปร

ในการประกาศตัวแปรใน Rust เราใช้คำสั่ง let และ mut โดย let ใช้สำหรับการประกาศตัวแปรแบบ immutable (แก้ไขไม่ได้) และ mut ใช้สำหรับการประกาศตัวแปรแบบ mutable (แก้ไขได้) ตัวอย่างเช่น let x = 5; จะเป็นการประกาศตัวแปร x ที่มีค่าเป็น 5 และไม่สามารถเปลี่ยนแปลงค่าได้ ในขณะที่ let mut x = 5; จะเป็นการประกาศตัวแปร x ที่มีค่าเป็น 5 และสามารถเปลี่ยนแปลงค่าได้

let, mut

let ใช้ประกาศตัวแปรแบบ immutable ซึ่งค่าของตัวแปรจะไม่สามารถเปลี่ยนแปลงได้หลังจากถูกกำหนดค่าครั้งแรก ส่วน mut ใช้ประกาศตัวแปรแบบ mutable ซึ่งค่าของตัวแปรสามารถเปลี่ยนแปลงได้

การกำหนด Type

เราสามารถระบุ Type ของตัวแปรได้โดยใช้เครื่องหมาย : ตามด้วย Type ที่ต้องการ เช่น let x: i32 = 5; ซึ่งเป็นการประกาศตัวแปร x ให้เป็น Type i32 (Integer 32-bit) และมีค่าเป็น 5

infer type

Rust สามารถ infer (อนุมาน) Type ของตัวแปรได้โดยอัตโนมัติจากค่าที่เรากำหนดให้ เช่น let x = 5; Rust จะ infer ว่า x เป็น Type i32 เนื่องจากค่า 5 เป็น Integer

การประกาศหลายตัว

เราสามารถประกาศตัวแปรหลายตัวพร้อมกันได้ เช่น let x = 10, y = 20; ซึ่งเป็นการประกาศตัวแปร x และ y พร้อมกัน โดย x จะมีค่าเป็น 10 และ y จะมีค่าเป็น 20

ค่าคงที่ (Constants)

ใน Rust เราสามารถประกาศค่าคงที่ได้โดยใช้คำสั่ง const ค่าคงที่จะไม่สามารถเปลี่ยนแปลงได้หลังจากถูกกำหนดค่า และต้องระบุ Type เสมอ

การประกาศค่าคงที่

การประกาศค่าคงที่ใช้คำสั่ง const ตามด้วยชื่อค่าคงที่, Type และค่าที่ต้องการ เช่น const PI: f64 = 3.14;

การระบุ Type

ค่าคงที่ต้องระบุ Type เสมอ เช่น f64 สำหรับ Floating-point number

Tuple

Tuple เป็น Type ที่สามารถเก็บค่าได้หลายชนิดในตัวแปรเดียว

การประกาศ Tuple

การประกาศ Tuple ทำได้โดยใช้เครื่องหมาย () และคั่นค่าแต่ละค่าด้วยเครื่องหมาย , เช่น let x = (1, "hello", 3.14);

การเข้าถึงค่าใน Tuple

เราสามารถเข้าถึงค่าใน Tuple ได้โดยใช้ index เริ่มต้นจาก 0 เช่น x.0 จะได้ค่า 1, x.1 จะได้ค่า “hello” และ x.2 จะได้ค่า 3.14

Array

Array เป็น Type ที่สามารถเก็บค่าชนิดเดียวกันได้หลายค่า

การประกาศ Array

การประกาศ Array ทำได้โดยใช้เครื่องหมาย [] และคั่นค่าแต่ละค่าด้วยเครื่องหมาย , เช่น let x = [1, 2, 3, 4, 5];

การระบุ Type

เราสามารถระบุ Type ของ Array ได้ เช่น let x: [i32; 5] = [1, 2, 3, 4, 5]; ซึ่งหมายความว่า x เป็น Array ที่เก็บค่า i32 จำนวน 5 ตัว

การกำหนดค่าเริ่มต้น

เราสามารถกำหนดค่าเริ่มต้นให้กับ Array ได้ เช่น let x = [0; 5]; ซึ่งจะสร้าง Array ที่มีค่าเป็น 0 จำนวน 5 ตัว

ฟังก์ชัน (Function)

ฟังก์ชันเป็นบล็อกของโค้ดที่ทำงานเฉพาะอย่าง

การประกาศฟังก์ชัน

การประกาศฟังก์ชันใช้คำสั่ง fn ตามด้วยชื่อฟังก์ชัน, parameter (ถ้ามี), Type ของ parameter, และ Type ของ return value (ถ้ามี) เช่น

fn get_number() -> i32 {
    10
}

การ return ค่า

เราสามารถ return ค่าจากฟังก์ชันได้โดยใช้คำสั่ง return เช่น

fn get_number() -> i32 {
    return 10;
}

การใช้ return expression

เราสามารถใช้ return expression ได้โดยไม่ต้องใช้คำสั่ง return เช่น

fn get_number() -> i32 {
    10 // ไม่ต้องมี ;
}

if/else

if/else ใช้ในการควบคุมการทำงานของโปรแกรมตามเงื่อนไข

การเขียน if/else

การเขียน if/else ใน Rust ไม่ต้องใช้วงเล็บ () สำหรับเงื่อนไข และต้องใช้ปีกกา {} เสมอ เช่น

if x > 5 {
    println!("x มากกว่า 5");
} else {
    println!("x น้อยกว่าหรือเท่ากับ 5");
}

การใช้ expression ใน if/else

if/else สามารถใช้เป็น expression ได้ เช่น

let number = if x > 5 { 10 } else { 20 };

Loop

Loop ใช้ในการวนซ้ำการทำงาน

while

while loop จะทำงานซ้ำจนกว่าเงื่อนไขจะเป็น false เช่น

let mut i = 0;
while i < 5 {
    println!("{}", i);
    i += 1;
}

loop

loop loop จะทำงานซ้ำไปเรื่อยๆ จนกว่าจะใช้คำสั่ง break เพื่อออกจาก loop เช่น

loop {
    println!("Hello");
    break;
}

for

for loop ใช้ในการวนซ้ำใน collection เช่น Array หรือ Range เช่น

for i in 0..5 {
    println!("{}", i);
}

Break

break ใช้ในการออกจาก loop

Label

เราสามารถตั้งชื่อให้กับ loop เพื่อใช้ break หรือ continue ไปยัง loop ที่ต้องการ เช่น

'outer: loop {
    loop {
        break 'outer;
    }
}

Continue

continue ใช้ในการข้ามไปยัง iteration ถัดไปของ loop

Collection

Collection เป็น Type ที่ใช้ในการเก็บข้อมูลหลายๆ ตัว

Vector

Vector เป็น collection ที่สามารถเพิ่มและลดขนาดได้

การใช้ push, pop

push ใช้ในการเพิ่มค่าลงใน Vector และ pop ใช้ในการนำค่าออกจาก Vector

การใช้ Macro

Macro สามารถใช้ในการสร้าง Vector ได้อย่างง่ายดาย เช่น vec![1, 2, 3]

Hash Map

Hash Map เป็น collection ที่เก็บข้อมูลในรูปแบบ Key-Value

การประกาศ Hash Map

เราสามารถประกาศ Hash Map ได้โดยใช้ HashMap จาก std::collections

การใช้ insert

insert ใช้ในการเพิ่ม Key-Value ลงใน Hash Map

การใช้ get

get ใช้ในการดึงค่าจาก Hash Map โดยใช้ Key

Struct

Struct เป็น Type ที่เราสามารถสร้างขึ้นมาเองได้

การประกาศ Struct

การประกาศ Struct ใช้คำสั่ง struct ตามด้วยชื่อ Struct และ field ต่างๆ เช่น

struct Point {
    x: i32,
    y: i32,
}

การเข้าถึง Field

เราสามารถเข้าถึง field ของ Struct ได้โดยใช้ . เช่น point.x

การสร้าง Constructor (Impl)

เราสามารถสร้าง Constructor ให้กับ Struct ได้โดยใช้ impl

การใช้ Module

เราสามารถใช้ Struct ร่วมกับ Module เพื่อจัดระเบียบ Code

Module

Module ใช้ในการจัดระเบียบ Code

การสร้าง Module

เราสามารถสร้าง Module ได้โดยใช้คำสั่ง mod

การ Import Module

เราสามารถ Import Module ได้โดยใช้คำสั่ง use

การใช้ pub (Public)

pub ใช้ในการทำให้ item ใน Module สามารถเข้าถึงได้จากภายนอก

Trait

Trait คล้ายกับ Interface ในภาษาอื่นๆ ใช้ในการกำหนด behavior

การประกาศ Trait

การประกาศ Trait ใช้คำสั่ง trait

การ Implement Trait

เราสามารถ Implement Trait ให้กับ Struct ได้

การใช้ Trait

เราสามารถใช้ Trait เพื่อกำหนด behavior ที่ Struct ต้องมี

Enum

Enum เป็น Type ที่มีค่าได้หลายแบบ

การประกาศ Enum

การประกาศ Enum ใช้คำสั่ง enum

การใช้ match

match ใช้ในการจับคู่ค่าของ Enum

การใช้ Enum ร่วมกับค่า (Value)

Enum สามารถเก็บค่าได้

Closure

Closure คือฟังก์ชันแบบ Anonymous หรือ Lambda

การประกาศ Closure

การประกาศ Closure ใช้ |parameter| { body }

การใช้งาน Closure

เราสามารถใช้งาน Closure ได้เหมือนฟังก์ชันทั่วไป

Closure เป็น Parameter

Closure สามารถใช้เป็น Parameter ให้กับฟังก์ชันได้


💬 ปรึกษาการเงินฟรีกับผู้เชี่ยวชาญ คลิกเพื่อแอดไลน์


👉 แอดไลน์เพื่อปรึกษาฟรี


หรือสแกน QR เพื่อแอด

QR Code Line