4

重複の可能性:
PHP の抜粋に相当する Ruby はありますか?

次のような Ruby ハッシュを取得する方法はありますか。

myhash = {a: 12, b:24, c:36}

これをローカル変数のセットに変換しますか(明らかに手動で割り当てを行うことはありません)?結果は、ステートメントを実行したかのようになります。

a = 12
b = 24
c = 36

同様に、定義済みのローカル変数のセットを取得して、キーが変数名で値が変数値であるハッシュを作成できますか? 私はこれまでにこのようなものを見たことがないので、答えはノーだと思いますが、それは素晴らしいことです...

4

2 に答える 2

2

あなたはおそらくこれをすでに知っているでしょうが、記録のために: ローカルの代わりにインスタンス変数を作成したい場合は、この関数が機能します:

def f x
  x.each do |k, v|
    instance_variable_set "@#{k}", v
  end
end

f :abc => 123, 'def' => 456

> @abc
=> 123 
> @def
=> 456 
于 2012-06-24T00:35:20.783 に答える
0

あなたはこのようなことの多くをKernel.eval:で行うことができます

a = 1; b = 2; c = 3

local_variables.grep(/^[a-z]\w*/)
=> ["a", "b", "c"]

# Map local variables to hash
@h = Hash[local_variables.grep(/^[a-z]\w*/).map { |var| [var, eval(var)] }]     
=> {"a"=>1, "b"=>2, "c"=>3}

# Map hash to local variables
@b = binding
@h.each { |k,v| eval("#{k}_new = #{v + 100}", @b) }

local_variables.grep(/^[a-z]\w*/)
=> ["a", "b", "c", "a_new", "b_new", "c_new"]

[a_new, b_new, c_new]
=> [101, 102, 103]
于 2012-06-23T23:21:20.293 に答える