2016-04-28 8 views
0

こんにちは、以下のコードがあります。関数Split_lineは配列を返します。値splittedArrayである必要があります。コンパイラでは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)= {'である必要があります。それに加えて、通常、この種のエラーを避けるために、関数の戻り値の型を常に置くことをお勧めします。それはまた、良い練習、IMOです。入力ミスとして閉じる。 –

+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) = {を使用するか:"Procedure syntax is dropped in favor of always defining functions with ="def Split_line(line: String): Seq[String] = {

さえあることに注意してくださいいくつかの点で完全にその構文を削除することを計画しています。

+0

'|'のみを使用しても動作しませんでした。それを機能させるには\\が必要です。 '|'は正規表現の一部であるように見えるので、\\を使って動作させる必要があります – Raj

+0

ああ、真実です、正規表現であって文字列区切りではありません!細かい、編集済み:-) –

関連する問題