ข้ามไปยังเนื้อหา

Functions

function ใน TypeScript นิยามด้วย function หรือ arrow syntax พร้อม type annotation ที่ใส่หรือไม่ใส่ก็ได้ ส่วนใน Rust ทุก function นิยามด้วย fn และ ต้องระบุ type ของ parameter กับค่า return ทุกตัว — compiler จะไม่ infer ข้ามขอบเขตของ function เลย ทำให้ signature ของ function กลายเป็น contract ที่ชัดเจนและอ่านง่าย

TypeScript ใช้ : Type กับ parameter และ : ReturnType หลังวงเล็บปิด ส่วน Rust ใช้ : Type แบบเดียวกันกับ parameter แล้วต่อท้ายรายการ parameter ด้วย -> ReturnType

// TypeScript
function add(a: number, b: number): number {
return a + b;
}
// Rust
fn add(a: i32, b: i32) -> i32 {
a + b // no semicolon — this is the return value
}

สังเกตว่าบรรทัดสุดท้ายไม่มี semicolon ใน Rust นั้น expression สุดท้ายของ block (ที่ไม่มี ;) จะถูก return โดยปริยาย ถ้าเติม semicolon เข้าไป expression นั้นจะกลายเป็น statement ที่ return () (unit) ซึ่งในกรณีนี้จะกลายเป็น type error

TypeScript
function add(a: number, b: number): number {
return a + b;
}
function greet(name: string): string {
return `Hello, ${name}!`;
}
console.log(add(3, 4)); // 7
console.log(greet("Alice")); // Hello, Alice!
Rust
fn add(a: i32, b: i32) -> i32 {
a + b // last expression, no semicolon = return value
}
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
fn main() {
println!("{}", add(3, 4)); // 7
println!("{}", greet("Alice")); // Hello, Alice!
}
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
fn main() {
let sum = add(3, 4);
println!("3 + 4 = {sum}");
let msg = greet("Rustacean");
println!("{msg}");
}
ใน Rust การไม่มี semicolon บนบรรทัดสุดท้ายของ body ของ function หมายความว่าอะไร?
การใส่ annotation ระบุ return type จำเป็นไหมสำหรับ function ใน Rust?
type ใดของ Rust ที่แทน 'ไม่มีค่า return ที่มีความหมาย' (เทียบเท่า void)?