2016-10-11 5 views
1

私は複数の割り当てを使いたいのですが、私が入力した値の一部については気にしません。だからvoid変数に何かを割り当てる方法があります(別名/dev/null bashから)。 nil = 'I wont be used'のようなものです。私は以下で達成したいもののより具体的な例を持っています。ruby​​の複数の代入を使用してvoid変数に値を代入する方法はありますか?

私の入力は次のとおりです。

['no','foo','nop','not at all','bar'] 

そして、私はそれをこのように割り当てる:

nil,foo,*nil,bar = ['no','foo','nop','not at all','bar'] 
+0

共通代替だけ使用であります'_ 'をプレースホルダvarとして使用します。 – halfelf

答えて

3
_, foo, *_, bar = ['no','foo','nop','not at all','bar'] 
foo #=> "foo" 
bar #=> "bar" 
_ #=> ["nop", "not at all"] 

:私がやりたい何

i,foo,dont,care,bar = ['no','foo','nop','not at all','bar'] 
#or with a splat : 
dont,foo,*care,bar = ['no','foo','nop','not at all','bar'] 

はこのようなものです*_を次のように置き換えることもできますただ*です。

はい、_は完全に有効なローカル変数です。

もちろん、使用しない値には_を使用する必要はありません。たとえば、エラーの可能性を減らすことができる_を使用して

cat, foo, *dog, bar = ['no','foo','nop','not at all','bar'] 

を書くことができますが、主にそれはあなたがその値を使用するつもりはない読者に伝えるためです。あなたは配列の要素があることが少ない変数を割り当てると、配列の末尾の要素が破棄され

_key, value = [1, 2] 

:一部が使用されることはありません値のためのアンダースコアで始まる変数名を使用して好みます。たとえば、また、アレイから特定の要素を抽出するvalues_atを使用することができ

a, b = [1, 2, 3] 
a #=> 1 
b #=> 2 
+0

私のアドバイスは、あなたが得るものを見るためにさまざまな表現で遊ぶことです。基本的なルールは、変数への値の割り当てが1つしかないと結論づけることができればOKです。 '* a、b、* c = [1,2,3,4,5]'は、代入があいまいでRubyに例外を発生させる例です。 –

+0

'_some_random_name'を書いたとしても、私は_unused variable_フラグを' _'と書いた場合に削除してしまいます。 –

+0

@UlysseBN、私は "linter"には従いませんが、いくつかは '_unused_key'と書いています。私はそれに言及するために私の答えを編集しました。ありがとう。 –

1

ary = ['no','foo','nop','not at all','bar'] 

foo, bar = ary.values_at(1, -1) 

foo #=> "foo" 
bar #=> "bar" 

指標以外には、それはまた、範囲を受け入れ:

ary.values_at(0, 2..3) #=> ["no", "nop", "not at all"] 
関連する問題