2013-05-19 4 views
13

रूबी लैम्ब्डा वाक्यविन्यास है, तो मैं -> प्रतीक का उपयोग कर सकते हैं:मैं रूबी के नए लैम्ब्डा सिंटैक्स का उपयोग कैसे करूं?

match "/", to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get] 
match("/", to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get]) 
match("/", { to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get] }) 

वापसी एक ही सिंटैक्स त्रुटि के सभी:

a = 0 
new -> { a < 5 } do 
    puts a 
    a += 1 
end 

यह बहुत अच्छी तरह से काम करता है, लेकिन जब मैं यह करने के लिए कोशिश :

$ ruby -c -e 'match("/", to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get])' 
-e:1: syntax error, unexpected '|' 
match("/", to: -> { |e| [404, {}, ["Hello! I am mi... 

क्या मुझे कुछ याद आ रही है?

+0

कृपया पूर्ण त्रुटि ढेर दें। –

+0

^^^ कोई "स्टैक" नहीं है, इसकी एक वाक्यविन्यास त्रुटि है। हालांकि, वाक्यविन्यास त्रुटि दिखाने के लिए लाइन जोड़ा गया। – CuriousMind

उत्तर

20

मुझे लगता है कि नई वाक्य रचना

match "/", to: ->(e) { [404, {}, ["Hello! I am micro rack app"]] }, via: [:get] 
9

मुझे लगता है कि वाक्य रचना इस तरह होना चाहिए होना चाहिए।

->(e) { [404, {}, ["Hello! I am micro rack app"]] 
+3

आपके बाद 10s :) – lis2

1

यह आप -> और lambda वाक्य रचना मिश्रण कर रहे हैं

match("/", to: lambda { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get]) 

और

match("/", to: -> (e) { [404, {}, ["Hello! I am micro rack app"]] }, via: [:get]) 

व्यक्तिगत तौर पर मैं 'लैम्ब्डा' वाक्य रचना का प्रयोग करेंगे के रूप में यह अधिक rubyish है लगता है।

संबंधित मुद्दे