2011-10-26 21 views
4
object TestClass { 
    def main (args: Array[String]) { 
    println("Hello World"); 
    val c = List (1,2,3,4,5,6,7,8,9,10) 
    println(findMax(c)) 
    } 
    def findMax (tempratures: List[Int]) { 
    tempratures.foldLeft(Integer.MIN_VALUE) {Math.max} 
    } 
} 

出力がなぜない印刷値が示され

Hello World 
10 

出力は、私はこれがの一つであるIntelliJの

答えて

10

でこれを

Hello World 
() 

やってるされScalaの関数から返さ最も一般的なスカラーのタイプミス。

あなたはあなたの方法の終わりに=を逃している:

def findMax (tempratures: List[Int]) { 

次のようになります。

def findMax (tempratures: List[Int]) = { 

=をオフのままでは、あなたの方法はUnit(何を)返すことを意味します。

+0

と代わりたい

def findMax (tempratures: List[Int]) : Unit = { ... } 

別名

def findMax (tempratures: List[Int]) { ... } 

今私はdummieように感じる:)。 '='はこのメソッドが何かを返すことを意味しますか? – Omnipresent

+4

@Omnipresent:すべてのメソッドが何かを返しますが、 '= 'を指定しない場合、戻り値の型は常に' Unit'、つまり '()'です。 Scalaは関数型言語であるように設計されており、関数型プログラミングでは、ほとんどの場合、 'if':' val x = if b {ifVal} {elseVal} 'のような値を返します。 – ffriend

7

戻りタイプなしでfindMaxを定義するので、戻りタイプはUnitまたは()です。あなたは

def findMax (tempratures: List[Int]) : Int = { ... } 

または省略形

def findMax (tempratures: List[Int]) = { ... } 
関連する問題