On Thu, Dec 20, 2012 at 1:38 AM, Derrick B. <[email protected]> wrote:
> First of all, thanks for the fast responses!
>
> Secondly, I swear I tried bracketing the false side of the conditional
> (pg 98, section 4.5.5.3 - "The Ruby Programming Language" book), but I
> remember it assigning the array to the first variable - w.
I would choose a completely different approach: I would have a single
expression for matching and decide which assignments to make based on
the value of one of the capturing groups in the conditional branch:
["1 3/4", "5"].each do |s|
puts s
if %r{\A(\d+)(?:\s+(\d+)/(\d+))?\z} =~ s
w, n, d = $2 ? [$1.to_i, $2.to_i, $3.to_i] : [1, $1.to_i, 0]
printf "%4d %4d %4d\n", w, n, d
else
$stderr.puts "No match #{s}"
end
end
I also spiced the regexp a bit more to be more restrictive.
> In Perl, there are times when "those brackety thingies" are not
> necessary, but as a programmer, I like readabiliy (yes, still talking
> about Perl :) ) and will include them when it just makes sense.
If you like readability then why are you using Perl in the first place? :-)
Cheers
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
-- You received this message because you are subscribed to the Google Groups
ruby-talk-google group. To post to this group, send email to
[email protected]. To unsubscribe from this group, send email
to [email protected]. For more options, visit this
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en