[Lua] ฟังก์ชั่นรีเทิร์นหลายค่าและฟังก์ชั่นแบบรับค่าไม่ต้องครบตาม Arguments by

31
Mar
0

เนื่องจากเพิ่งมาเขียน Lua เดือนนี้ ก็มีโค้ดที่เกี่ยวกับฟังก์ชั่นที่ช่วยให้การทำงานสะดวกสบายขึ้นมานำเสนอฮะ

อันแรก ฟังก์ชั่นในลัวร์รีเทิร์น 2 ค่า อันนี้ไม่แน่ใจว่าภาษาไหนทำได้บ้างแต่จากที่เคยเขียนมาเพิ่งเจอในภาษานี้ครับ อเมซซิ่งมากๆ
local a,b = 1,2
function test2Params(x,y)
return x+1,y+2 --รีเทิร์นสองพารามิเตอร์
end
print('local a,b:'..a..','..b)
a,b = test2Params(a,b)
print('test2Params(a,b):'..a..','..b)

ถัดมาอันนี้เป็นวิธีอ้อม เนื่องจากเราไม่สามารถกำหนด Default Parameter ลงไปในการประกาศฟังก์ชั่นตรงๆ แบบ PHP/AS3 ได้ และยังไม่สามารถ Override ฟังก์ชั่นแบบ C# ได้ แต่สามารถรับไม่ครบมาเช็คค่าด้านในแบบนี้ดื้อๆได้เลยครับ
function testOptionalParams(x,y) -- รับสองตัวแปร
if (y == nil ) then -- ถ้าส่งมาแค่ x (y ไม่ส่งมา) ก็ให้ y เป็นสักค่า
y = 0;
end
return x+y
end
a = testOptionalParams(a)
print('testOptionalParams(a):'..a)
a = testOptionalParams(a,b)
print('testOptionalParams(a,b):'..a)

จากโค้ดทั้งสองชุดด้านบน รันแล้วจะได้ผลลัพธ์ดังนี้ครับ

local a,b:1,2
test2Params(a,b):2,4
testOptionalParams(a):2
testOptionalParams(a,b):6

Enjoy this article?

Consider subscribing to our RSS feed!

ไม่มีความเห็น

ยังไม่มีความเห็น

ใส่ความเห็น

RSS feed for comments on this post