Multiple dispatch
Multiple dispatch เป็นหนึ่งในจุดเด่นสำคัญของ Julia ที่ช่วยเพิ่มทั้งความยืดหยุ่นและประสิทธิภาพให้กับโปรแกรม โดย multiple dispatch จะเลือกรันเมธอดที่แตกต่างกันตามประเภทของอาร์กิวเมนต์ที่ส่งเข้าไปในฟังก์ชัน
ตัวอย่างในวิดีโอใช้ multiple dispatch เพื่อคืนค่าที่แตกต่างกัน ขึ้นอยู่กับว่าประเภทของอาร์กิวเมนต์เป็น String หรือไม่
function add_values(x, y)
x + y
end
function add_values(x::String, y::String)
x * y
end
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Julia ระดับกลาง
คำแนะนำการฝึกหัด
- สร้างฟังก์ชัน
largest_valueโดยให้ทำงานดังนี้:- ถ้าอินพุตเป็น
Stringให้ใช้mapเพื่อ map ฟังก์ชันlengthกับแต่ละอาร์กิวเมนต์(x, y, z) - ถ้าอินพุตเป็น
Boolให้คืนค่าอาร์กิวเมนต์นั้นโดยตรง - ถ้าอินพุตเป็นประเภทอื่น ให้หาค่าสูงสุดจากทุกค่าโดยใช้
maximum
- ถ้าอินพุตเป็น
- ลบบรรทัดที่คอมเมนต์ไว้ที่ด้านล่าง (กรณีทดสอบ) แล้วตรวจสอบให้แน่ใจว่าลอจิกทำงานได้ถูกต้อง!
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create three functions to handle any input, String input, and Bool input
function largest_value(x, y, z)
maximum((____, ____, ____))
end
function largest_value(x::____, y::____, z::____)
map(length, (____, ____, ____))
end
function largest_value(x::____, y::____, z::____)
x, y, z
end
# Un-comment this test case to test your function
#println(largest_value("12", "24", "36"))