2016-04-28 68 views
0

嗨以下是代碼。函數Split_line返回一個數組。我想splitted的值應該是Array。但編譯器將其視爲Unit。我在這裏做錯了什麼?編譯錯誤:'值foreach不是單位的成員'

object Main { 

    def Split_line(line: String){ 
    line.split("\\|\\|")  
    } 

    def main(args: Array[String]) { 
    val splitted = Split_line("This is a line || hi ") 
    //***I am getting error here : 'value foreach is not a member of Unit' 
    splitted.foreach(println) 
    } 

} 
+3

你錯過了一個'='。它應該是'def splitLine(line:String)= {'。除此之外,我建議始終放置函數的返回類型,通常避免這種錯誤。國際海事組織也是一個很好的做法。以印刷錯誤結尾。 –

+2

@AlexisC。有它的權利 - 見http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration更多的。將來,請將代碼的實際文本包含在代碼塊中,以便我們可以輕鬆地複製和粘貼來自己嘗試,而不是截圖。 – childofsoong

回答

1

該語法總是表示函數返回單元。使用def Split_line(line: String) = {(帶有等於)或更好,但如果你不確定,顯式聲明的返回類型:def Split_line(line: String): Seq[String] = {

千萬注意,甚至有計劃在某些時候完全刪除語法:"Procedure syntax is dropped in favor of always defining functions with ="

+0

只使用'|'不適合我。必須有\\才能使其工作。 '|'看起來像是正則表達式的一部分,所以必須使用\\使其工作 – Raj

+0

哦,真的,那是一個正則表達式,而不是字符串分隔符!很好,編輯:-) –

相關問題