2016-02-29 4 views
6

次の式は、それらのやり方を解決するのはなぜですか?大括弧は改行よりも優先順位が高くなければなりません。括弧内の改行が算術演算結果を変更するのはなぜですか?

3 - (1 
     1) 
# => 2 

私は連続改行として宣言する(エスケープ)または最初の行にあるプラスを移動した場合、意図した動作が実現されています:

プラスを省略

3 - (1 + 1) 
# => 1 

3 - (1 
    + 1) 
# => 2 

はまた、発現が2に評価できます

3 - (1 \ 
    + 1) 
# => 1 

3 - (1 + 
     1) 
# => 1 

答えて

5

これは、式が不完全でない限り、新しい行が式の終わりとして認識されるためです。例えば、

(1 
+ 1) 

は、括弧内の最後の式が返されるので、+1と同じである

(1; 
+1) 

と同じです。それは1と同じです。

行の末尾に+がある場合、式は不完全であり、したがって次の行に進みます。つまり、

3 - (1 + 
     1) 

3 - (1 + 1)と解釈されます。

2

角括弧内にコードがある場合は、\で終了しないか、数値演算子で新しい行を開始しないと、すべての行がコードのコード行として分離されます。だからあなたの例では

def plus_minus_if_you_understand_this_the_problem_is_solved_i_guess 
    3 - (1 
     1) 
end 

手段私は数3を持っており、括弧内の式を減算します。私はライン#1番号1を持っている括弧内および#2の行番号1再び、それは表現の最後の行だとendが返される前に、それはそれで最後の項目defに似(ルビーによって戻されます:。

(3 # doing nothing 
    1) # returns 1 

も再びコードのこの部分は、括弧内の最後の項目であるので、2を返します。

(puts "hello!" 
    2) => 2 
関連する問題