Array disorder in ruby 1.8.6

  • Follow


Hello,

I suppose I found a bug in ruby (or behavior that I am unable to
explain). My version is, exactly, ruby 1.8.6 (2007-03-13 patchlevel 0)
[universal-darwin8.0]

problem is in this method:

def plotresults(results,runset)
        ...
  runset.each{|k| f.printf("%-*s",ns,k)}
        ...
end

each iterator just prints the items of the runset array out of order.
however, if I just evaluate the array anywhere in the method, everything
is ok:

def plotresults(results,runset)
        runset
        ...
  runset.each{|k| f.printf("%-*s",ns,k)}
        ...
end

Not much more to say about that. Can anybody explain to me why Ruby
should behave like that?
-- 
Posted via http://www.ruby-forum.com/.

0
Reply moskyt (1) 4/4/2008 11:57:56 AM

On Fri, Apr 4, 2008 at 1:57 PM, Frantisek Havluj <moskyt@rozhled.cz> wrote:
> Hello,
>
>  I suppose I found a bug in ruby (or behavior that I am unable to
>  explain). My version is, exactly, ruby 1.8.6 (2007-03-13 patchlevel 0)
>  [universal-darwin8.0]
>
>  problem is in this method:
>
>  def plotresults(results,runset)
>         ...
>   runset.each{|k| f.printf("%-*s",ns,k)}
>         ...
>  end
>
>  .each iterator just prints the items of the runset array out of order.
>  however, if I just evaluate the array anywhere in the method, everything
>  is ok:
>
>  def plotresults(results,runset)
>         runset
>         ...
>   runset.each{|k| f.printf("%-*s",ns,k)}
>         ...
>  end
>
>  Not much more to say about that. Can anybody explain to me why Ruby
>  should behave like that?

One question: is runset really an Array or a Set? Set doesn't keep the order.

Jano

0
Reply jan.svitok (810) 4/4/2008 12:03:25 PM


Hi --

On Fri, 4 Apr 2008, Frantisek Havluj wrote:

> Hello,
>
> I suppose I found a bug in ruby (or behavior that I am unable to
> explain). My version is, exactly, ruby 1.8.6 (2007-03-13 patchlevel 0)
> [universal-darwin8.0]
>
> problem is in this method:
>
> def plotresults(results,runset)
>        ...
>  runset.each{|k| f.printf("%-*s",ns,k)}
>        ...
> end
>
> .each iterator just prints the items of the runset array out of order.
> however, if I just evaluate the array anywhere in the method, everything
> is ok:
>
> def plotresults(results,runset)
>        runset
>        ...
>  runset.each{|k| f.printf("%-*s",ns,k)}
>        ...
> end
>
> Not much more to say about that. Can anybody explain to me why Ruby
> should behave like that?

It's impossible to comment without seeing the code where runset is
created.


David

-- 
Rails training from David A. Black and Ruby Power and Light:
   ADVANCING WITH RAILS   April 14-17          New York City
   INTRO TO RAILS         June 9-12            Berlin
   ADVANCING WITH RAILS   June 16-19           Berlin
See http://www.rubypal.com for details and updates!

0
Reply dblack (1323) 4/4/2008 12:15:08 PM

2008/4/4, Frantisek Havluj <moskyt@rozhled.cz>:

>  I suppose I found a bug in ruby (or behavior that I am unable to
>  explain). My version is, exactly, ruby 1.8.6 (2007-03-13 patchlevel 0)
>  [universal-darwin8.0]
>
>  problem is in this method:
>
>  def plotresults(results,runset)
>         ...
>   runset.each{|k| f.printf("%-*s",ns,k)}
>         ...
>  end
>
>  .each iterator just prints the items of the runset array out of order.

What exactly do you mean by "out of order"?  What order?  What type is runset?

>  however, if I just evaluate the array anywhere in the method, everything
>  is ok:

What do you mean be "evaluate"?

>  def plotresults(results,runset)
>         runset
>         ...
>   runset.each{|k| f.printf("%-*s",ns,k)}
>         ...
>  end
>
>  Not much more to say about that. Can anybody explain to me why Ruby
>  should behave like that?

You need to say more about that - otherwise we can't say much more about it.

Cheers

robert

-- 
use.inject do |as, often| as.you_can - without end

0
Reply shortcutter (5765) 4/4/2008 12:19:27 PM

3 Replies
45 Views

(page loaded in 0.136 seconds)


Reply: