--000e0cd14ec8286f7f047498abca
Content-Type: text/plain; charset=ISO-8859-1
On Sun, Sep 27, 2009 at 3:20 PM, Thairuby ->a, b {a + b} <
kabkab / doramail.com> wrote:
> Thairuby ->a, b {a + b} wrote:
> > Is this ok? But it still use variable :(
> >
> > file.each_line { |line|
> > if line (a || line_patterns["pattern a"])
> > process_pattern_a(line)
> > elsif line (b || line_patterns["pattern b"])
> > process_pattern_b(line)
> > # some more elsifs
> > end
> > }
>
> I'm wrong typing. It would be
>
> file.each_line { |line|
> if line (a || ^pattern[a]*/)
> process_pattern_a(line)
> elsif line (b || pat+e(rn)? b\s*$/)
> process_pattern_b(line)
> # some more elsifs
> end
> }
>
> Does it have o option for string? :)
> --
> Posted via http://www.ruby-forum.com/.
>
>
Unfortunately, I don't think this does anything, because a and b are
declared within the block, so while the scope is the same, the extent is
not. Essentially, a and b are no longer bound, after each iteration of the
loop. So upon entering each iteration, they do not retain their previously
assigned values.
This can be illustrated:
"patterna\npatte b".each_line do |line|
p line
puts "defined?(a) #{defined?(a).inspect}"
puts "defined?(b) #{defined?(b).inspect}"
if line (a || ^pattern[a]*/)
elsif line (b || pat+e(rn)? b\s*$/)
else
end
puts "defined?(a) #{defined?(a).inspect}"
puts "defined?(b) #{defined?(b).inspect}" , ''
end
__END__
Which has the following output:
"patterna\n"
defined?(a) nil
defined?(b) nil
defined?(a) "local-variable(in-block)"
defined?(b) "local-variable(in-block)"
"patte b"
defined?(a) nil
defined?(b) nil
defined?(a) "local-variable(in-block)"
defined?(b) "local-variable(in-block)"
You can see, that a and b were defined after the if statement in "patterna",
but were no longer defined before the if statement for "patte b"
--000e0cd14ec8286f7f047498abca--