2016-05-22 5 views
0

ルビーでは、現在の値に基づいて2つの値の間で変数の値を変更する方法はありますか? 私はこのような何かが必要です。varの現在値が'value one'変数の値を2つの値に変更する

+0

をなぜ 'VAR = v2'?求めている関数は代入演算子のようです。あなたがオブジェクトの属性を話しているならば、それは異なっています。 –

+0

オブジェクトは別のオブジェクトになることはできません。 – Stefan

+0

あなたの編集について: 'v1'と' v2'でどうなるのでしょうか? – Stefan

答えて

3

あなたはcycle列挙子使用することができます

values = ['value one', 'value two'].cycle 
#=> #<Enumerator: ["value one", "value two"]:cycle> 

をと値を循環するnextを呼び出す:

var = values.next 
#=> "value one" 

var = values.next 
#=> "value two" 

var = values.next 
#=> "value one" 
+0

良い答え。しかし、問題があります: 'var'は初期値を持っています。 – Sajjad

+2

サジャッド、問題ありません。ステファンが意味するのはこれです: 'var =" cat ";値= [var、 "dog"]。サイクル#=>#<列挙子:["cat"、 "dog"]:サイクル>; var = values.next#=> "cat"; var = values.next#=> "dog"; var = values.next#=> "cat" 'などとなります。 –

+0

@Sajjadあなたが詳細を提供できるなら、確かに助けになるでしょう。ユースケースを説明し、変数を変更したい/変更する必要がある理由 – Stefan

1

は、私はあなたがルビー三項演算子を使用することができると思いますですので、私は.flipを呼び出すときに、それは'value two'からvarの値を変更

var = 'value one' 
var.flip('value one', 'value two') 
puts var # => 'value two' 

をまたは場合 - この

var1 = 2 

var1 = 3 == var1 ? var1 : 2 

または

のような他のcontruction
irb(main):049:0> var1 = if 4 == var1 then var1 else 2 end 
=> 4 
i 
関連する問題