में पैटर्न मिलान के लिए निकास जांच हमारे पास कुछ पैटर्न मिलान कोड है जहां हम संकलक द्वारा चेतावनी दी जाने की उम्मीद करेंगे कि मैच संपूर्ण नहीं है, लेकिन हमें कोई नहीं मिलता है। क्या ऐसे कुछ मामले हैं जहां थकावट की जांच नहीं की जा सकती है?स्कैला 2.11
उदा हमारे उदाहरण (का उपयोग कर scalactic अच्छा + बुरा):
(maybeModelIdOrFailure, maybeMake) match {
case (Some(Good(modelId)), Some(makeId)) if modelId >= 0 && taxonomyService.isValidModel(makeId, modelId) =>
Good(Some(MakeModelParameters(makeId, Some(modelId), modelLineId = None, index)))
case (Some(Good(modelLineId)), Some(makeId)) if modelLineId < 0 && taxonomyService.isValidModelLine(makeId, -1 * modelLineId) =>
Good(Some(MakeModelParameters(makeId, modelId = None, modelLineId = Some(-1 * modelLineId), index)))
case (Some(Good(modelOrModelLineId)), Some(makeId)) =>
Bad(One(IdNotFound(modelIdKeyName, modelOrModelLineId)))
case (Some(Good(modelId)), None) if modelId >= 0 =>
Bad(One(IdInvalid(modelIdKeyName, "Model Id without Make Id")))
case (Some(Good(modelLineId)), None) if modelLineId < 0 =>
Bad(One(IdInvalid(modelIdKeyName, "Model Line Id without Make Id")))
case (None, Some(makeId)) => Good(Some(MakeModelParameters(makeId, None, None, index)))
// case (None, None) => Good(None)
// case (Some(Bad(invalidParams)), _) => Bad(One(invalidParams))
}
हम अंतिम दो पंक्तियों टिप्पणी की है, लेकिन संकलक चेतावनी दी है नहीं है और हम किसी भी जांचों को अक्षम नहीं किया।
यह https://issues.scala-lang.org/browse/SI-7631 से संबंधित हो सकता है (हालांकि इसे स्वयं से ऐसा प्रभाव नहीं होना चाहिए)। आप शाखाओं के अंदर गार्ड की स्थिति को स्थानांतरित करने का प्रयास कर सकते हैं (उदा। 'केस (कुछ (अच्छा (मॉडल आईडी)), कोई नहीं) => यदि (मॉडल आईडी> = 0) ... और ...') और यह जांचने में जांच करता है या नहीं। –
धन्यवाद यह है! इसे एक उत्तर के रूप में जोड़ें और मैं इसे स्वीकार करूंगा! – longliveenduro