दूसरे उदाहरण तो सच में आप गुमनाम कार्यों का उपयोग कर रहे हर समय, एक छोटी सी अर्थ में
add = function(a,b) return a+b end
के बराबर है।
लेकिन अनाम संदर्भ अन्य संदर्भों में अधिक उपयोगी हो सकते हैं। उदाहरण के लिए, फ़ंक्शन का उपयोग अन्य कार्यों उत्परिवर्तित करने के लिए (कार्यात्मक प्रोग्रामिंग की आत्मा।)
function make_version_with_n_args (func, n)
if n == 1 then
return function (x) return x end
else
return function (x, ...)
return func (x, make_version_with_n_args (func, n-1)(...))
end
end
end
add_four = make_version_with_n_args (function (a, b) return a+b end, 4)
print (add_four(3, 3, 3, 3))
add_sizes = {}
for i = 1, 5 do
add_sizes[i] = make_version_with_n_args(function (a, b) return a+b end, i)
end
func_args = {}
for i = 1, 5 do
func_args[#func_args+1] = 2
print (add_sizes[i](unpack(func_args)))
end
function make_general_version (func)
return function (...)
local args = {...}
local result = args[#args]
for i = #args-1,1,-1 do
result = func(args[i], result)
end
return result
end
end
general_add = make_general_version (function (a, b) return a+b end)
print (general_add(4, 4, 4, 4))
असल में, आप हर एक समारोह के लिए एक नाम बना सकते हैं यदि आप चाहते हैं, लेकिन स्थितियों में जहां इतने सारे के आसपास फेंक रहे हैं एक-ऑफ फ़ंक्शंस, ऐसा करने के लिए अधिक सुविधाजनक नहीं है।
स्रोत
2011-11-15 19:52:54
आपको इसे पीछे की ओर मिला। एक अधिक उपयोगी मानसिक मॉडल 'फंक्शन एफ (...) ... अंत' को 'स्थानीय f = function (...) ... end' के लिए वाक्य रचनात्मक चीनी के रूप में इलाज कर रहा है, और सामान्य रूप से कार्यों के रूप में वस्तुओं के रूप में सोचता है अपने कार्यक्रम के स्थिर इमारत ब्लॉक के। आप नहीं पूछते कि आप उन्हें पहले एक विस्तृत अंग्रेजी नाम दिए बिना संख्या अक्षर का उपयोग क्यों कर सकते हैं, है ना? – delnan