Functions
Functions ใน TypeScript เทียบกับ Rust
หัวข้อที่มีชื่อว่า “Functions ใน TypeScript เทียบกับ Rust”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
// TypeScriptfunction add(a: number, b: number): number { return a + b;}
// Rustfn 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
function add(a: number, b: number): number { return a + b;}
function greet(name: string): string { return `Hello, ${name}!`;}
console.log(add(3, 4)); // 7console.log(greet("Alice")); // Hello, Alice!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}");}Compiling…