পাইথনে মাল্টলাইন ল্যাম্বডা নেই: কেন নয়?


335

আমি শুনেছি যে পাইথনে মাল্টলাইন ল্যাম্বডাস যুক্ত করা যাবে না কারণ তারা পাইথনের অন্যান্য বাক্য গঠনগুলির সাথে সিনথেটিকভাবে সংঘর্ষে লিপ্ত হয়। আমি আজ বাসে এটি সম্পর্কে ভাবছিলাম এবং বুঝতে পেরেছিলাম যে মাল্টিলাইন ল্যাম্বডাস সংঘর্ষের সাথে একটি পাইথন নির্মাণের কথা আমি ভাবতে পারি না। আমি যে ভাষাটি বেশ ভাল জানি তা দেওয়া আমাকে অবাক করে দিয়েছে।

এখন, আমি নিশ্চিত যে গুডোর ভাষায় মাল্টলাইন ল্যাম্বডাস অন্তর্ভুক্ত না করার কারণ ছিল, তবে কৌতূহলের বাইরে: এমন এক পরিস্থিতি কী যেখানে মাল্টলাইন ল্যাম্বডাসহ অস্পষ্টতা দেখা দেয়? আমি যা শুনেছি তা কি সত্য, বা পাইথন মাল্টলাইন ল্যাম্বডাসের অনুমতি দেয় না এমন অন্য কোনও কারণ রয়েছে?


12
tl; dr version: কারণ পাইথন} ব্লক ব্যতীত একটি অলস ভাষা এবং সুতরাং এটি একটি সামঞ্জস্যপূর্ণ বাক্য গঠন নকশা রাখার জন্য অনুমোদিত ছিল না।
অ্যান্ড্রু

11
এছাড়াও: আমি উত্তরে কেউ পুরোপুরি বিস্মিত হয়েছি যে উত্তরে কেউ এর উল্লেখ করেনি ... আপনি পাইথনের চরিত্রটি দিয়ে লাইনগুলি শেষ করতে পারেন এবং পরবর্তী লাইনটিতে চালিয়ে যেতে পারেন ... এই তথ্যটি এই পুরো প্রশ্নটিকে বহিষ্কার করেছে ...
অ্যান্ড্রু


"সিনট্যাক্টিকাল ডিজাইন"
নিকোলাস

এর জন্য এক্সপ্রেশনগুলির ভিতরে বিবৃতি অনুমোদিত করতে হবে। আপনি যদি এটি করতে যাচ্ছেন তবে আপনার lambdaপ্রথমে প্রকাশের প্রয়োজন হবে না ; আপনি কেবল defপ্রকাশে বিবৃতি ব্যবহার করতে পারেন ।
চিপনার

উত্তর:


153

নিম্নলিখিতটি দেখুন:

map(multilambda x:
      y=x+1
      return y
   , [1,2,3])

এটি কি ল্যাম্বদা ফিরছে (y, [1,2,3])(এইভাবে মানচিত্রটি কেবল একটি প্যারামিটার পায়, ফলে ত্রুটির সৃষ্টি হয়)? নাকি ফিরে আসে y? বা এটি একটি সিনট্যাক্স ত্রুটি, কারণ নতুন লাইনে কমাটি ভুল জায়গায় স্থান পেয়েছে? পাইথন কীভাবে জানতে পারে আপনি কী চান?

পেরেনগুলির মধ্যে, ইন্ডেন্টেশন অজগরটির পক্ষে কোনও গুরুত্ব দেয় না, তাই আপনি নির্বিশেষে মাল্টিলিন দিয়ে কাজ করতে পারবেন না।

এটি কেবল একটি সহজ, সম্ভবত আরও উদাহরণ রয়েছে।


107
আপনি যদি কোনও ল্যাম্বডা থেকে একটি টিপল ফিরিয়ে দিতে চান তবে তারা প্রথম বন্ধনী ব্যবহারের জন্য বাধ্য করতে পারে। আইএমও, এই ধরনের অস্পষ্টতা রোধ করার জন্য এটি সর্বদা কার্যকর করা উচিত ছিল তবে ওহ ভাল।
এমপেন

26
এটি একটি সাধারণ অস্পষ্টতা যা অতিরিক্ত প্যারেনস যোগ করে সমাধান করা উচিত, এমন একটি জিনিস যা ইতিমধ্যে অনেক জায়গায় বিদ্যমান রয়েছে, উদাহরণস্বরূপ জেনারেটর এক্সপ্রেশনগুলি অন্যান্য আর্গুমেন্ট দ্বারা বেষ্টিত হয়, একটি পূর্ণসংখ্যার শাব্দিকের উপর একটি পদ্ধতি কল করে (যদিও এটি প্রয়োজনের পরে এমনটি হওয়ার দরকার নেই) a ফাংশনের নামটি একটি অঙ্ক দিয়ে শুরু করা যায় না) এবং অবশ্যই একক-লাইন ল্যাম্বডাস (যা একাধিক লাইনে লেখা দীর্ঘ প্রকাশ হতে পারে)। মাল্টি-লাইন ল্যাম্বডাস এই ক্ষেত্রেগুলিকে বিশেষত পৃথক করে না যে এটি ভিত্তিতে তাদের বাদ দিয়ে দেয়। এটিই আসল উত্তর।
nmclean

3
আমি পছন্দ করি যে কীভাবে গাজিলিয়ন ভাষা রয়েছে যেগুলি এটির সাথে কোনও হতাশার বিষয় নয়, তবে কিছু অসাধারণ কারণ রয়েছে যা অনুমান করা খুব কঠিন না বলে মনে হয়
নিকোলাস


কেন আমি ল্যাম্বডা ব্যবহার করি না, এর কারণ পাইথনে আন্ডার-ডেভলপড।
নং

634

গাইডো ভ্যান রসুম (পাইথনের উদ্ভাবক) এই সঠিক প্রশ্নের উত্তর একটি পুরানো ব্লগ পোস্টে নিজেই দিয়েছেন ।
মূলত, তিনি স্বীকার করেছেন যে এটি তাত্ত্বিকভাবে সম্ভব, তবে যে কোনও প্রস্তাবিত সমাধান হ'ল আন-পাইথোনিক:

"তবে এই ধাঁধার জন্য প্রস্তাবিত যে কোনও সমাধানের জটিলতা আমার কাছে অপরিসীম: এর জন্য পার্সার (বা আরও স্পষ্টভাবে, লেক্সার) স্ট্যান্ড রেখে সংক্ষিপ্ত সংবেদনশীল এবং ইনডেন্ট-সংবেদনশীল পদ্ধতিগুলির মধ্যে পিছনে পিছনে স্যুইচ করতে সক্ষম হওয়া দরকার পূর্ববর্তী মোড এবং ইন্ডেন্টেশন স্তরের। প্রযুক্তিগতভাবে এগুলি সব সমাধান করা যেতে পারে (ইতিমধ্যে সাধারণকরণের জন্য ইন্ডেন্টেশন স্তরগুলির একটি স্ট্যাক রয়েছে) that তবে এর মধ্যে আমার অন্ত্রের অনুভূতিটি কেড়ে নেয় না যে এটি সমস্ত বিস্তৃত রুবে গোল্ডবার্গের বিপরীত কারণ ""


108
কেন এটি শীর্ষ উত্তর নয়? এটি প্রযুক্তিগত কারণে নয়, এটি একটি নকশার পছন্দ, যেমন আবিষ্কারক স্পষ্ট করে বলেছেন।
ড্যান আব্রামভ

13
@ ড্যানআব্রামভ কারণ ওপি সম্ভবত কয়েক বছর ধরে লগইন করেনি।
অধ্যাপক ফ্যালকেন চুক্তি

7
যারা Rube গোল্ডবার্গ রেফারেন্স বোঝা নি, দেখুন: en.wikipedia.org/wiki/Rube_Goldberg_Machine
fjsj

56
গিডোর উত্তরটি কেবলমাত্র আরেকটি কারণ, আমি আশা করি পাইথন ব্লকগুলি সংজ্ঞায়িত করতে ইন্ডেন্টেশনটির উপর নির্ভর করে না।
এলএস

25
আমি নিশ্চিত নই যে আমি "অন্ত্রের অনুভূতি" কে একটি ডিজাইনের পছন্দ বলব। ;)
ইলিয়ট ক্যামেরন 21

54

এটি সাধারণত খুব কুরুচিপূর্ণ (তবে কখনও কখনও বিকল্পগুলি আরও কদর্য হয়), তাই একটি বক্রবন্ধকে প্রকাশ করার জন্য একটি কর্মপদ্ধতি:

lambda: (
    doFoo('abc'),
    doBar(123),
    doBaz())

এটি যদিও কোনও অ্যাসাইনমেন্ট গ্রহণ করবে না, সুতরাং আপনাকে আগেই ডেটা প্রস্তুত করতে হবে। আমি যে জায়গাটি দরকারী হিসাবে পেয়েছি তা হ'ল পাইসাইড মোড়ক, যেখানে আপনার মাঝে মাঝে সংক্ষিপ্ত কলব্যাক থাকে। অতিরিক্ত সদস্য ফাংশনগুলি লেখার বিষয়টি আরও কুশ্রী হবে। সাধারণত আপনার এটির প্রয়োজন হবে না।

উদাহরণ:

pushButtonShowDialog.clicked.connect(
    lambda: (
    field1.clear(),
    spinBox1.setValue(0),
    diag.show())

2
আমার বস আমাদের পিকিউটি অ্যাপ্লিকেশনটিতে এই জাতীয় কিছু চাইছিলেন। অসাধারণ!
TheGerm

1
এর জন্য ধন্যবাদ, আমি আমাদের পাইসাইড ইউআইয়ের কলব্যাক হিসাবে শর্ট (তবে এখনও মাল্টলাইন) ল্যাম্বডাস ব্যবহার করার একটি ভাল উপায় খুঁজছিলাম।
মাইকেল লিওনার্ড

এবং এখন আমি এটি দেখেছি এটি তাত্ক্ষণিকভাবে ব্যবহার lambda argএবং setattr(arg, 'attr','value')"কোনও অ্যাসাইনমেন্ট ..." নষ্ট করার পরামর্শ দেওয়া হয়েছে । এবং তারপর স্বল্প-সার্কিট মূল্যায়ন এর andএবং or... এটা জাভাস্ক্রিপ্ট যে এটা আছে না। আইভির মতো দেওয়ালের মতো শিকড়গুলি আপনার মধ্যে ডুবে যায়। আমি প্রায় আশা করি আমি ক্রিসমাসের ওপরে এটি ভুলে গেছি।
নিগেল 222

বেশ চালাক - এবং বেশ পাঠযোগ্য। এখন - তাদের (নিখোঁজ ..) অ্যাসাইনমেন্ট সম্পর্কে ..
জাভাদবা

@ নিগেল 222 কেন লজ্জা লাগছে? পাইথন ভাষা মৌলিকভাবে বিকলাঙ্গ - কিন্তু এটি ব্যবহৃত এক পথে অনেক জন্য ডেটা বিজ্ঞান । তাই আমরা সামঞ্জস্য করি। পার্শ্ব প্রতিক্রিয়াগুলি করার উপায়গুলি সন্ধান করা (প্রায়শই কেবল প্রিন্টিং / লগিং যথেষ্ট!) এবং অ্যাসাইনমেন্ট (প্রায়শই কেবল অন্তর্বর্তী ভার্সনের পক্ষে যথেষ্ট!) ভাষাটি ভালভাবে পরিচালনা করা উচিত। তবে PEP
সেগুলিও

17

কয়েকটি প্রাসঙ্গিক লিঙ্ক:

কিছুক্ষণের জন্য, আমি রিয়ার বিকাশ অনুসরণ করছিলাম, যা প্রাথমিকভাবে রুবি ব্লকগুলির সাথে পাইথনের ইন্ডেন্টেশন ভিত্তিক সিনট্যাক্সটি নিয়ে যাচ্ছিল, এটি সবই এরলংয়ের শীর্ষে। তবে, ডিজাইনার ইনডেন্টেশন সংবেদনশীলতা ছেড়ে দিয়েছিল এবং এই সিদ্ধান্তের বিষয়ে তিনি লিখেছেন যে সিদ্ধান্তটি তিনি ইনডেন্টেশন + মাল্টি-লাইন ব্লক নিয়ে যে সমস্যাগুলি নিয়ে আলোচনা করেছিলেন এবং গিডোর নকশার বিষয়গুলি / সিদ্ধান্তগুলির জন্য তিনি যে প্রশংসা অর্জন করেছেন তা অন্তর্ভুক্ত রয়েছে:

http://www.unlimitednovelty.com/2009/03/indentation-sensitivity-post-mortem.html

এছাড়াও, পাইথনের আমি রুবি স্টাইলের ব্লকের জন্য একটি আকর্ষণীয় প্রস্তাব পেয়েছি যেখানে গুইডো একটি প্রতিক্রিয়া পোস্ট করেছে যেখানে ডাব্লু / ও আসলে এটি শুট করেছে (যদিও পরবর্তী কোনও শুট ডাউন হয়েছে কিনা তা নিশ্চিত নয়):

http://tav.espians.com/ruby-style-blocks-in-python.html


12

[সম্পাদনা] এই উত্তরটি পড়ুন এটি ব্যাখ্যা করে যে মাল্টলাইন ল্যাম্বদা কেন জিনিস নয়।

সোজা কথায় বলতে গেলে এটি অযৌক্তিক। গাইডো ভ্যান রসমের ব্লগ পোস্ট থেকে:

আমি কোনও সমাধান অগ্রহণযোগ্য বলে মনে করি যা একটি অভিব্যক্তির মাঝখানে ইন্ডেন্টেশন-ভিত্তিক ব্লক এম্বেড করে। যেহেতু আমি বিবৃতি গোষ্ঠীকরণের জন্য বিকল্প বাক্য গঠন (যেমন ব্রেসেস বা শুরু / শেষ কীওয়ার্ডগুলি) সমানভাবে গ্রহণযোগ্য নয়, তাই এটি বেশিরভাগ ক্ষেত্রে একটি বহু-লাইন ল্যাম্বডাকে একটি অবিশ্বাস্য ধাঁধা তৈরি করে।


10

আমাকে আপনার কাছে একটি গৌরবময় কিন্তু ভয়ঙ্কর হ্যাক উপস্থাপন করুন:

import types

def _obj():
  return lambda: None

def LET(bindings, body, env=None):
  '''Introduce local bindings.
  ex: LET(('a', 1,
           'b', 2),
          lambda o: [o.a, o.b])
  gives: [1, 2]

  Bindings down the chain can depend on
  the ones above them through a lambda.
  ex: LET(('a', 1,
           'b', lambda o: o.a + 1),
          lambda o: o.b)
  gives: 2
  '''
  if len(bindings) == 0:
    return body(env)

  env = env or _obj()
  k, v = bindings[:2]
  if isinstance(v, types.FunctionType):
    v = v(env)

  setattr(env, k, v)
  return LET(bindings[2:], body, env)

আপনি এখন এই LETফর্মটি ব্যবহার করতে পারেন :

map(lambda x: LET(('y', x + 1,
                   'z', x - 1),
                  lambda o: o.y * o.z),
    [1, 2, 3])

যা দেয়: [0, 3, 8]



এটা সত্যিই দারুন! আমি মনে করি আমি পরের বার পাইথন লেখার সময় এটি ব্যবহার করব। আমি মূলত একজন লিস্প এবং জেএস প্রোগ্রামার এবং মাল্টি লাইনের লাম্বাডা অভাব ব্যথা করে। এটি এটি পাওয়ার একটি উপায়।
ক্রিস্টোফার ডুমাস

7

আমার কিছু প্রকল্পে এই নোংরা হ্যাক অনুশীলনের জন্য আমি দোষী, যা কিছুটা সহজ:

    lambda args...:( expr1, expr2, expr3, ...,
            exprN, returnExpr)[-1]

আমি আশা করি আপনি পাইথোনিক থাকার জন্য কোনও উপায় খুঁজে পেতে পারেন তবে যদি আপনি এটি করতে হয় তবে এক্সিকিউট এবং গ্লোবালগুলি ব্যবহারের চেয়ে এটি কম বেদনাদায়ক হয়।


6

আমাকে @ বালফা পার্সিং সমস্যাটি মোকাবিলার চেষ্টা করতে দিন। আমি মাল্টলাইন লামদা চারপাশে বন্ধনী ব্যবহার করব। যদি কোনও বন্ধনী না থাকে তবে ল্যাম্বডা সংজ্ঞাটি লোভী। তাই লাম্বদা ভিতরে

map(lambda x:
      y = x+1
      z = x-1
      y*z,
    [1,2,3]))

ফিরিয়ে দেয় এমন একটি ফাংশন দেয় (y*z, [1,2,3])

কিন্তু

map((lambda x:
      y = x+1
      z = x-1
      y*z)
    ,[1,2,3]))

মানে

map(func, [1,2,3])

যেখানে ফানকটি হ'ল মাল্টলাইন ল্যাম্বদা যা y * জেড ফিরে আসে। ওইটা কি কাজ করে?


1
আমি ভাবছি শীর্ষেরটি ফিরে আসা উচিত map(func, [1,2,3])এবং নীচের অংশে একটি ত্রুটি হওয়া উচিত কারণ মানচিত্রের ফাংশনে পর্যাপ্ত যুক্তি নেই। এছাড়াও কোডটিতে কিছু অতিরিক্ত বন্ধনী রয়েছে।
স্যামি বেঞ্চেরিফ

এটি পিচরম চলমান পাইথন 2.7.13 এ ফেলে দেওয়া এটি একটি সিনট্যাক্স ত্রুটি দেয়।
simbo1905

অতিরিক্ত প্রথম বন্ধনী
সামি বেঞ্চেরিফ

4

(যে বিষয়ে এখনও আগ্রহ রয়েছে তার জন্য))

এটি বিবেচনা করুন ("মাল্টলাইন" লাম্বদার মধ্যে আরও বিবৃতিগুলিতে বিবৃতিগুলির রিটার্ন মানগুলি এমনকি ব্যবহারের সাথে অন্তর্ভুক্ত রয়েছে, যদিও এটি বমি করার ক্ষেত্রে কুৎসিত ;-)

>>> def foo(arg):
...     result = arg * 2;
...     print "foo(" + str(arg) + ") called: " + str(result);
...     return result;
...
>>> f = lambda a, b, state=[]: [
...     state.append(foo(a)),
...     state.append(foo(b)),
...     state.append(foo(state[0] + state[1])),
...     state[-1]
... ][-1];
>>> f(1, 2);
foo(1) called: 2
foo(2) called: 4
foo(6) called: 12
12

এটি বিভিন্ন পরামিতিগুলির সাথে দ্বিতীয়বার বলা হয়ে কাজ করে না এবং মেমরি ফাঁস হয় না যদি না প্রথম state.clear()ফাংশন হয় ডিফল্ট আর্গুমেন্ট কেবল তখনই তৈরি হয় যখন ফাংশনটি তৈরি করা হয়।
ম্যাথু ডি। শোলফিল্ড

1

\আপনার ল্যাম্বদা ফাংশনের জন্য একাধিক লাইন থাকলে আপনি কেবল স্ল্যাশ ( ) ব্যবহার করতে পারেন

উদাহরণ:

mx = lambda x, y: x if x > y \
     else y
print(mx(30, 20))

Output: 30

প্রশ্নটি 1 টির বেশি আক্ষরিক লাইনের পরিবর্তে 1 টিরও বেশি প্রকাশের সাথে উদ্বেগ প্রকাশ করে।
টমাস জুবিরি

1

আমি অজগর দিয়ে শুরু করছি তবে জাভাস্ক্রিপ্ট থেকে আসা সবচেয়ে সুস্পষ্ট উপায়ে একটি ক্রিয়াকলাপ হিসাবে অভিব্যক্তিটি বের করা ....

কৃত্রিম উদাহরণস্বরূপ, গুণফলটি (x*2)ফাংশন হিসাবে নিষ্কাশন করা হয় এবং তাই আমি মাল্টলাইন ব্যবহার করতে পারি:

def multiply(x):
  print('I am other line')
  return x*2

r = map(lambda x : multiply(x), [1, 2, 3, 4])
print(list(r))

https://repl.it/@datracka/python-lambda-function

ল্যাম্বডা এক্সপ্রেশনটিতে নিজেই কীভাবে মাল্টলাইন করা যায় তা যদি এই প্রশ্নের সঠিক উত্তর না দেয় তবে যদি কেউ এই থ্রেডটি কীভাবে এক্সপ্রেশনটি ডিবাগ করতে দেখায় (আমার মত) আমি মনে করি এটি সাহায্য করবে


2
আমি কেন এটি করব এবং কেবল লিখব না map(multiply, [1, 2, 3])?
থোথাল

0

কুরুচিপূর্ণ হ্যাকসের বিষয়ে, আপনি সর্বদা এর মিশ্রণ execএবং একটি নিয়মিত ফাংশন ব্যবহার করতে পারেন যেমন একটি বহুরেখা ফাংশন সংজ্ঞায়িত করতে:

f = exec('''
def mlambda(x, y):
    d = y - x
    return d * d
''', globals()) or mlambda

আপনি এটিকে কোনও ফাংশনে মুড়িয়ে রাখতে পারেন:

def mlambda(signature, *lines):
    exec_vars = {}
    exec('def mlambda' + signature + ':\n' + '\n'.join('\t' + line for line in lines), exec_vars)
    return exec_vars['mlambda']

f = mlambda('(x, y)',
            'd = y - x',
            'return d * d')

0

আমি হ্রাস সহ একটি ডিক বোঝার চেষ্টা করার জন্য কিছুটা খেলছিলাম, এবং এই একটি লাইনার হ্যাক নিয়ে এসেছি:

In [1]: from functools import reduce
In [2]: reduce(lambda d, i: (i[0] < 7 and d.__setitem__(*i[::-1]), d)[-1], [{}, *{1:2, 3:4, 5:6, 7:8}.items()])                                                                                                                                                                 
Out[3]: {2: 1, 4: 3, 6: 5}

আমি এই জাভাস্ক্রিপ্ট ডিক বোঝাপড়াতে যা করা হয়েছিল ঠিক তেমনই করার চেষ্টা করছিলাম: https://stackoverflow.com/a/11068265


0

এখানে মাল্টি লাইন ল্যাম্বডাসের আরও আকর্ষণীয় বাস্তবায়ন। কোডটি কাঠামোর উপায় হিসাবে পাইথন কীভাবে ইনডেন্টগুলি ব্যবহার করে সে কারণে এটি অর্জন সম্ভব নয়।

তবে ভাগ্যক্রমে আমাদের জন্য, অ্যারে এবং প্রথম বন্ধনী ব্যবহার করে ইনডেন্ট ফর্ম্যাটিং অক্ষম করা যেতে পারে।

কিছু ইতিমধ্যে চিহ্নিত হিসাবে, আপনি আপনার কোড লিখতে পারেন:

lambda args: (expr1, expr2,... exprN)

তত্ত্ব অনুসারে যদি আপনার বাম থেকে ডানদিকে মূল্যায়নের গ্যারান্টি থাকে তবে এটি কাজ করবে তবে আপনি এখনও একটি এক্সপ্রেশন থেকে অন্যের কাছে মূল্যবোধ হারাবেন।

যা কিছুটা আরও ভার্বোস তা অর্জনের একটি উপায় হ'ল

lambda args: [lambda1, lambda2, ..., lambdaN]

যেখানে প্রতিটি ল্যাম্বদা পূর্ববর্তীটি থেকে আর্গুমেন্ট গ্রহণ করে।

def let(*funcs):
    def wrap(args):
        result = args                                                                                                                                                                                                                         
        for func in funcs:
            if not isinstance(result, tuple):
                result = (result,)
            result = func(*result)
        return result
    return wrap

এই পদ্ধতিটি আপনাকে এমন কিছু লিখতে দেয় যা কিছুটা লিস্প / স্কিমের মতো।

সুতরাং আপনি এই জাতীয় জিনিস লিখতে পারেন:

let(lambda x, y: x+y)((1, 2))

হাইপোপেনজ গণনা করার জন্য আরও জটিল পদ্ধতি ব্যবহার করা যেতে পারে

lst = [(1,2), (2,3)]
result = map(let(
  lambda x, y: (x**2, y**2),
  lambda x, y: (x + y) ** (1/2)
), lst)

এটি স্কেলার সংখ্যার একটি তালিকা ফিরিয়ে দেবে যাতে এটি একাধিক মানকে হ্রাস করতে ব্যবহৃত হতে পারে।

অনেকগুলি ল্যাম্বডা থাকা অবশ্যই খুব কার্যকর হবে না তবে আপনি যদি সীমাবদ্ধ থাকেন তবে তাড়াতাড়ি কোনও কাজ করার পক্ষে এটি একটি ভাল উপায় হতে পারে তবে এটি পরে একটি আসল ফাংশন হিসাবে পুনরায় লিখুন।


-3

কারণ একটি ল্যাম্বডা ফাংশনটি এক-রেখাযুক্ত বলে মনে করা হয়, কারণ এটি কোনও ফাংশনের সাধারণতম রূপ, an entrance, then return


1
না, যে কেউ ইভেন্ট-চালিত প্রোগ্রাম লেখেন তিনি আপনাকে বলবেন যে মাল্টলাইন ল্যাম্বডা গুরুত্বপূর্ণ।
আকংকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.