From: Wilson Bilkovich Date: 2006-01-07T16:05:39+09:00 Subject: Re: Sippet needed to convert from a string On 1/6/06, Tom Reilly wrote: > Snippit needed > > given some option variables > > c1 = 0 > c2 = 0 > c3 = 0 > c4 = 0 > > given a string (a set of pairs of options) which could be read from > MYSQL or a file > > paramString = '"c1" 0 "c3" 1 "c2" "y" "c4" "v"' > > such that: > > c1 = 0 > c2 = "y" > c3 = 1 > and c4 = "v" > > at the end of the procedure. > > I just can't figure out how to do this with RUBY. > There's no way yet to "meta-programmatically" set local variables. If you're OK with instance variables, you could replace the code I'm about to paste with calls to instance_variable_set. Here's one way, using a Hash: irb(main):001:0> require 'enumerator' => true irb(main):002:0> params = "c1 0 c3 1 c2 y c4 v" => "c1 0 c3 1 c2 y c4 v" irb(main):003:0> h = {} => {} irb(main):004:0> params.split.each_slice(2) {|key, val| h[key] = val} => nil irb(main):005:0> h => {"c1"=>"0", "c2"=>"y", "c3"=>"1", "c4"=>"v"} irb(main):006:0>