2015-01-14 10 views
8

क्या यह जांचना संभव है कि स्ट्रिंग शून्य या खाली है या नहीं?स्ट्रिंग शून्य या खाली है या नहीं, यह जांचने के लिए पैटर्न मिलान

मैं की तरह कुछ करने के लिए कोशिश कर रहा हूँ:

def sendToYahoo(message:Email) ={ 
    val clientConfiguration = new ClientService().getClientConfiguration() 
    val messageId : Seq[Char] = message.identifier 
    messageId match { 
    case messageId.isEmpty => validate() 
    case !messageId.isEmpty => //blabla 
    } 
} 

लेकिन मैं एक संकलन त्रुटि है।

अग्रिम धन्यवाद।

def isEmpty(x: String) = Option(x).forall(_.isEmpty) 

या

def isEmpty(x: String) = x == null || x.isEmpty 

तुम भी स्ट्रिंग ट्रिम करने के लिए, यदि आप पर विचार " " रूप में अच्छी तरह से खाली होने के लिए चाहते हो सकता है:

उत्तर

19

आप की तरह एक साधारण समारोह लिख सकते हैं।

def isEmpty(x: String) = x == null || x.trim.isEmpty 

और उसके बाद का उपयोग यह

val messageId = message.identifier 
messageId match { 
    case id if isEmpty(id) => validate() 
    case id => // blabla 
} 

या बिना एक match

if (isEmpty(messageId)) { 
    validate() 
} else { 
    // blabla 
} 

या यहाँ तक कि

object EmptyString { 
    def unapply(s: String): Option[String] = 
    if (s == null || s.trim.isEmpty) Some(s) else None 
} 

message.identifier match { 
    case EmptyString(s) => validate() 
    case _ => // blabla 
} 
+0

trimming के साथ अच्छा विचार है! यह अक्सर भूल जाता है। – Madoc

+0

'नहीं। मौजूद है == forall' – sschaef

+0

@sschaef मेला पर्याप्त, धन्यवाद, मैंने इसे अपडेट किया है। –

6
def isNullOrEmpty[T](s: Seq[T]) = s match { 
    case null => true 
    case Seq() => true 
    case _ => false 
} 
+0

स्काला भाषा डिजाइनरों बना सकता था हमारे स्केला nubies जीवन भी बहुत कुछ एक isNu प्रदान करके आसान है डीईएफ़ IsNull [टी]: की तरह IsNull विधि के साथ llable विशेषता (obj: टी) = obj मैच { मामले अशक्त => true मामले _ => झूठी } –

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