2012-02-12 19 views
9

में वस्तु तर्क मैं CoffeeScript मेंदो coffeescript

console.log({ 
    a: 'a' 
}, { 
    b: 'b' 
}); 

परिवर्तित करना चाहते हैं। एक ही तरीका है मैंने पाया है

console.log 
    a: 'a', 
    b: 'b' 

यह विचित्र लगता है कि a: 'a' और b: 'b' ही इंडेंट नहीं कर रहे हैं, जब वे इस स्थिति में अनिवार्य रूप से symetric हैं।

+0

सिर्फ इसलिए कि आप कॉफ़ीस्क्रिप्ट में ब्रेसिज़/पैरों को छोड़ सकते हैं, इसका मतलब यह नहीं है कि आपको चाहिए। यह शायद "नहीं होना चाहिए" मामलों में से एक है। –

उत्तर

11

या आप ब्रेसिज़, जो सीएस में काम करते हैं इस्तेमाल कर सकते हैं:

console.log {a:'a'}, {b:'b'} 
+2

दाएं, ब्रेसिज़ और कोष्ठक वैकल्पिक रूप से वैकल्पिक होते हैं लेकिन उनसे बचने के लिए गर्भपात का कोई कारण नहीं है। –

1

ठीक है, अगर तुम पार्स नियमों के बारे में सोचते हैं,

a: 'a', 
b: 'b' 

वास्तव में इसका मतलब है

{ a: 'a', b: 'b' } 

के बाद से इस व्यवहार आप चाहते हैं नहीं है, आप पार्सर बताने की आवश्यकता है कि के साथ लाइन b: एक और वस्तु है। इंडेंटिंग आपके लिए ऐसा करेगी। अब यह वास्तव में एक प्रश्न नहीं था, लेकिन मुझे उम्मीद है कि यह आपको समझने में मदद करेगा कि आपने जिस तरीके से वर्णन किया है उसे क्यों करना है। यह सही तरीका है।

1
$ coffee -bce 'console.log(a: "a"; b: "b")' 
// Generated by CoffeeScript 1.2.1-pre 

console.log({ 
    a: "a" 
}, { 
    b: "b" 
}); 
+0

मुझे खेद है, आपका पॉइंट क्या है – Randomblue

+0

बस अपने जेएस का प्रतिनिधित्व करने के लिए एक और तरीका दिखा रहा है। – matyr

28

एक अलग लाइन में अल्पविराम एक रखो, एक खरोज स्तर से कम हैश/वस्तु, तो यह माना जाता है समारोह आमंत्रण के हिस्से के रूप में।

console.log 
    a: 'a' 
, # indentation level matters! 
    b: 'b' 

क्योंकि खरोज स्तर हैश रूप में ही है, तो यह हैश का भाग माना जाता है इस काम नहीं करेगा।

console.log 
    a: 'a' 
    , 
    b: 'b' 
संबंधित मुद्दे