2017-08-22 11 views
2

私は非常に非常に新しいルビーです。誰も私のためにこれを解読できますか?1行に2つの条件が存在するのはなぜですか?

page = 1 if page <= 0 if @type != 'something' 

私の推測では、のようなものです:

if (page <= 0 && @type != 'something') 
then page = 1 
+2

です。それはちょっと混乱しているだけです。 – tadman

+0

合意したように、 'page = 1ならtype = 'something' && page <= 0'ははるかに良いでしょう。 – marksiemers

答えて

4

あなたrewritting:

if (page <= 0 && @type != 'something') 

は近いですが、正しくありません。あなたの元の行があると解釈されます:@type != 'something'が最初に評価されていることを意味

(page = 1 if page <= 0) if @type != 'something' 

、及び条件は、その時点でfalsyであれば残りはショートカットです。これはあなたの元の行のように書き換えることができる意味:

if (@type != 'something' && page <= 0) 
+0

ありがとう!少しだけ明確にするために。 @type!= 'something'が偽であれば、pageはこの文の前にあった値を持つだけです。それは正しい仮定ですか – g0rd

+0

はい正しいです。 – sawa

4

それを理解するための別の方法を、ちょうど

doThis if doThat 

文で声明をそれを打破することが

if doThat 
    doThis 
end 
を書くことと同じです

so ...

はに入るためには本当に悪い癖だし、誰これは悪い感じなければならない書いた

if @type != 'something' 
    if page <= 0 
    page = 1 
    end 
end 
+0

ありがとう!それは私にもっと意味をなさない。 – g0rd

+0

問題はない、私の喜び! – sircapsalot

関連する問題