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 เพื่อแอด

Leave a Reply