2015-09-24 55 views
1

我是斯卡拉初學者。我無法理解下面的斯卡拉表達:斯卡拉 - 無法弄清楚這個表達式評估

x = if(true) x+1 else x-1 

那麼x的初始值是3,執行它成爲上述表達式後4

我無法理解if(true),什麼是它實際上評估?

+0

從某種意義上說,該聲明並不「評估」任何東西。 '如果()'評估是否爲真或假。 'true'總是如此,所以'if(true)'永遠不會轉移到'else'語句。 – jwvh

+0

這是一個非常奇怪的說法。首先,它沒有做任何有用的事情; 'true'永遠是真的。其次,這個重新賦值'x'的意思是'x'必須是'var',這有時可以,但很少。你從哪裏看到這個聲明? – Martijn

+0

@Martijn ..謝謝..其中一個教程:)導師沒有完全解釋這個表達式(也許我無法正確掌握它) –

回答

4

if(true) x else y將始終執行if分支,因爲條件是true。因此,你的if表達式的結果總是爲x + 1

+0

嗨直到,感謝你的回覆,這是如何成爲真實的? ,檢查是否已經定義了'x'或是否存在'x' –

+1

@ user3211648中的任何值,if分支的計算條件是布爾文字「真」的括號內的表達式。布爾文字「true」被評估爲true,因此if分支被執行。這與'x'的值無關。 –

+0

謝謝直到..這是有幫助的:) –

1

隨着對@TillRohrmann的點頭,對於我們Scala新手來說,事情有時候不像對待經驗豐富的程序員那樣清晰。這是我的詳細嘗試,不僅僅是爲了你,而是爲了將來可能有類似問題的其他人。

x = if (true) x+1 else x-1 

認爲你的表達作爲

x = function_if (argument=true) { 
     if (argument = true){ 
      return x+1 
     }else{ 
      return x-1 
     } 
    } 

由於參數總是true,答案永遠是x+1。 希望這有助於!

+1

謝謝你的詳細解釋:) –

+1

@learningKid太棒了!祝你好運! – Prashant