2015-07-20 9 views
5

& नोटेशन का उपयोग करके पैरामीटरयुक्त फ़ंक्शन लिखना संभव है?इलीक्सिर: लेखन और नोटेशन का उपयोग करके पैरामीटरेटेड फ़ंक्शन लिखना

यहाँ से प्रोग्रामिंग अमृतडेव थॉमस की पुस्तक पैरामिट्रीकृत समारोह का एक उदाहरण है उपरोक्त कार्यक्रम के

title = fn (title) -> (fn (name) -> title <> " " <> name end) end 

mrs = title.("Mrs.") 
IO.puts mrs.("Rose") 

आउटपुट है:

Mrs. Rose 
[Finished in 0.6s] 

title & अंकन का उपयोग लिखा जा सकता है ? & अंकन का उदाहरण नीचे

iex> square = &(&1 * &1) 
#Function<6.17052888 in :erl_eval.expr/5> 

iex> square.(8) 
64 

उत्तर

9

@Gazler के रूप में सही ढंग से सुझाव इस वाक्य सीमाओं के कारण संभव नहीं है, लेकिन आप एक समान परिणाम प्राप्त कर सकते हैं आंशिक आवेदन के साथ। यहां अंतर यह है कि title फ़ंक्शन एक फ़ंक्शन लौटने की बजाय सीधे परिणाम देगा। mrs फ़ंक्शन पहले तर्क को "prefilling" द्वारा आंशिक एप्लिकेशन कर सकता है।

title = &(&1 <> " " <> &2) 
mrs = &title.("Mrs.", &1) 
IO.puts mrs.("Rose") 
+0

दिलचस्प। धन्यवाद –

+1

आंशिक आवेदन एक साफ चाल है। – Gazler

6

यह देखते हुए संभव नहीं होगा है। कब्जा उपयोग करने का प्रयास (&) एक समारोह कब्जा वाक्य रचना के साथ घोषित में समारोह वाक्य रचना बढ़ा देंगे एक CompileError

iex(1)> &(&(&1))  
** (CompileError) iex:2: nested captures via & are not allowed: &&1 
    (elixir) src/elixir_fn.erl:108: :elixir_fn.do_capture/4 
    (elixir) src/elixir_exp.erl:229: :elixir_exp.expand/2 
    (elixir) src/elixir_exp.erl:10: :elixir_exp.expand/2 
संबंधित मुद्दे