เขียน Early Return ในฟังก์ชัน Result<Success, Error>

wk
1 min readJul 12, 2020

--

ตัวอย่าง

ฟังก์ชัน multiply รับ Argument 2 ค่า คือ a และ b เป็น String ทั้งคู่ ความต้องการ คือ ให้ฟังก์ชัน Return error ออกไปทันที่พบว่าไม่สามารถแปลง a หรือ b เป็น Integer โดยให้ค่าที่ Return เข้า Case error ของ Result

Rust

Rust มี Build-in syntax ที่สามารถ Return error ออกจากฟังก์ชันภายใน Match expression ได้ทันที จากตัวอย่าง สามารถเขียน return Err(e) เมื่อพบว่าฟังก์ชัน parse ได้ผลลัทธ์เป็น Error

$ cargo script "./src/main.rs"Process argument a
Process argument b
Result = 200
Process argument a
Error = invalid digit found in string

F#

F# ไม่สามารถเขียน Early return ได้โดยตรง เพราะทุกอย่างใน F# เป็น Expression ในตัวอย่าง จึงใช้วิธีสร้าง ResultBuilder เพื่อ Return error ออกจากฟังก์ชัน ด้วย Computation expression

$ dotnet fsi --langversion:preview "./src/main.fsx"Processed argument a
Processed argument b
Result = 200
Processed argument a
Error = 10a is invalid int value

--

--

No responses yet