की तरह कुछ करने के लिए यह संभव है:स्कैला - सशर्त बयान के साथ पैटर्न मिलान?
def foo(x: Int): Boolean = {
case x > 1 => true
case x < 1 => false
}
की तरह कुछ करने के लिए यह संभव है:स्कैला - सशर्त बयान के साथ पैटर्न मिलान?
def foo(x: Int): Boolean = {
case x > 1 => true
case x < 1 => false
}
def foo(x: Int): Boolean =
x match {
case _ if x > 1 => true
case _ if x < 1 => false
}
ध्यान दें कि आप एक्स == 1 हालांकि के लिए एक मामला नहीं है ...
मैं कुछ इस तरह लिखना होगा:
def foo(x: Int) = if (x > 1) true
else if (x < 1) false
else throw new IllegalArgumentException("Got " + x)
अपवाद को फेंकना ज्यादातर स्कैला में खराब अभ्यास माना जाता है। बेहतर वापसी 'या तो [अवैध आर्ग्यूमेंट अपवाद, बूलियन] '। – Madoc
क्या? क्यूं कर? किस मानक से यह बुरा अभ्यास है? https://github.com/spray/spray/search?p=6&q=throw&ref=cmdform –
के बाद से x == 1
के मामले अपने उदाहरण में याद आ रही है, मुझे लगता है कि यह x < 1
के रूप में सिर्फ एक ही नियंत्रित किया जाता है।
आप इस तरह यह कर सकते हैं:
def foo(x:Int):Boolean = (x - 1).signum match {
case 1 => true
case _ => false
}
लेकिन तब, निश्चित रूप से यह कर सकते हैं एक बहुत सरल किया जा:
def foo(x:Int) = (x - 1).signum == 1
उम, 'def foo (x: int) = x> 1' रास्ता सरल और असीमित रूप से अधिक स्पष्ट होगा। – dhg
धन्यवाद। हाँ वास्तविक परीक्षण भूल जाओ, यह वाक्यविन्यास के मुद्दों के बारे में अधिक था। –
आप शायद सही श्रेणी में 1 मान शामिल करना चाहते हैं: 'case _ अगर x> = 1' –
बस थोड़ा सा प्रश्न। इसलिए स्कैला में, यदि कोई मामला वापस नहीं लौटाता है (उदाहरण के लिए शर्त सही नहीं है), तो केस शाखाओं के ठीक बाद स्केल जारी रहेगा? – hqt