2017-01-17 27 views
-7
def vertify(a:Int):Int= { 
    val result = 3 
    if(a>4) { 
     val result = a 
    } 
    return result 
} 

我所定義的功能的上方,然後使用它:錯誤如果返回Scala中

scala> vertify(5) 
res4: Int = 3 

爲什麼是結果圖3和5不?

+0

請您提供更多的細節問題,你試圖解決問題的其他方法。 – Pavel

+0

你應該閱讀有關斯卡拉值和變量,和範圍的基礎知識 – pedrorijo91

回答

6
if(a>4) { 
    val result = a 
} 

這是創建第二val名爲result即只有if塊內部作用域(可見),因此,返回語句總是返回第2行

定義的值A val不能被重新分配所以你需要使用一個var如果你需要更改值:

var result = 3 
if (a > 4) { 
    // no `var` or `val` prefix indicates we are 
    // referring to an existing variable that's already declared 
    result = a 
} 

但對於一個簡單的情況下,這樣就可以避免變量和使用:

def vertify(a: Int): Int = if (a > 4) a else 3 
3

你的,如果塊中定義一個新的價值。像這樣做:

def vertify(a:Int):Int= { 
    val result = 3 
    if(a>4) { 
    a 
    } else { 
    result 
    } 
} 

或更短:

def vertify(a: Int): Int = if (a > 4) a else 3