मैं पहले से ही पढ़ा है कि स्केला में अगर बयान हमेशास्केला विकल्प के साथ समस्याएं हो नौसिखिया, त्रिगुट ऑपरेटर
तो मैं निम्नलिखित (छद्म कोड) करने के लिए कोशिश कर रहा हूँ एक अभिव्यक्ति देता है के बराबर
क्याsql = "select * from xx" + iif(order.isDefined, "order by " order.get, "")
मैं
val sql: String = "select * from xx" + if (order.isDefined) {" order by " + order.get} else {""}
साथ कोशिश कर रहा हूँ लेकिन मैं इस त्रुटि मिलती है:
illegal start of simple expression
आदेश एक विकल्प है [स्ट्रिंग]
मैं सिर्फ एक विधि के लिए एक वैकल्पिक पैरामीटर करना चाहते हैं, और यदि उस पैरामीटर (इस मामले क्रम में) तो पास नहीं की जाएगी बस इसे
को छोड़ क्या होगा मैं जो करने की कोशिश कर रहा हूं उसे हासिल करने का सबसे बेवकूफ तरीका बनो?
- संपादन -
मुझे लगता है मैं
मैं इस तरह से पाया पूछने के लिए बहुत ज्यादा जल्दबाजी,
val orderBy = order.map(" order by " + _).getOrElse("")
इस यह करने के लिए सही तरीका है?
मैंने सोचा था कि नक्शा अन्य प्रयोजनों के लिए चाहिए था ...
आपका कोड संकलित नहीं कर रहा है क्योंकि आपको ' अगर अभिव्यक्ति। लेकिन जैसा कि टॉमसज़ नर्कविचज़ बताते हैं, वैसे भी इसे लिखने के बेहतर तरीके हैं। –
कोई भी टिप्पणी करना चाहता है * क्यों * हमें if-expression के चारों ओर ब्रैकेट की आवश्यकता है ("यह संकलित करता है" के अलावा)? –
@ लुइगीप्लिंग यह सिर्फ अटकलें है, लेकिन हो सकता है कि वे प्रोग्रामर भ्रम से बचें, क्योंकि '1 + अगर (बी) 2 अन्य 3 + 4' जैसी अभिव्यक्ति कैसे संबद्ध होगी। क्या यह '1 + है (यदि (बी) 2 और 3) + 4' या' 1 + (यदि (बी) 2 और 3 + 4) '? निश्चित रूप से आप एक व्याकरण प्राप्त कर सकते हैं जो इस अस्पष्टता को हल करता है (हास्केल करता है), लेकिन इसका मतलब यह नहीं है कि लोग गलतियां नहीं करेंगे क्योंकि उन्होंने एक अलग व्यवहार माना है। –