Syntax translation Java - Ruby

have this code in Java:

boolean monkey = true;
for(i=0; monkey; i++){
  if(index[i] == null) {
    put.something.new(i);
    break;
  }
}

I am aware that it makes no sense by itself so I will explain. I am
iterating through a (Sequel) database nodes. I am looking for a node
I.D. that is not being used. Basically, I am looking for and open
parking spot. When I find one, I insert my new data using the newly
found parking spot. I really can't figure out why I need to uniquely
identify each node by an I.D. as it is already uniquely identified by
location in the tree but that is a different matter entirely. All I
need is how to write a nice infinite 'for' loop in Ruby.

···

--
Posted via http://www.ruby-forum.com/.

have this code in Java:

boolean monkey = true;
for(i=0; monkey; i++){
if(index[i] == null) {
put.something.new(i);
break;
}
}

I am aware that it makes no sense by itself so I will explain. I am
iterating through a (Sequel) database nodes. I am looking for a node
I.D. that is not being used. Basically, I am looking for and open
parking spot. When I find one, I insert my new data using the newly
found parking spot. I really can't figure out why I need to uniquely
identify each node by an I.D. as it is already uniquely identified by
location in the tree but that is a different matter entirely. All I
need is how to write a nice infinite 'for' loop in Ruby.

loop {}

···

On Tue, Sep 29, 2009 at 5:24 PM, Jake Brightmatter <brightmatter@gmail.com> wrote:

--
Posted via http://www.ruby-forum.com/\.

--
Paul Smith
http://www.nomadicfun.co.uk

paul@pollyandpaul.co.uk

No, that's what you THINK you want because you're coming from java...

index is a bad name for a collection, so I'm going to call it parking_spots.

parking_spots.each_with_index do |parking_spot, i|
   next if parking_spot
   parking_spots[i] = my_car
   break
end

but honestly if you're doing this against a sequel db, you're it wrong. You should use the power of the DB instead of doing tons of roundtrips in ruby.

···

On Sep 29, 2009, at 09:24 , Jake Brightmatter wrote:

have this code in Java:

boolean monkey = true;
for(i=0; monkey; i++){
if(index[i] == null) {
   put.something.new(i);
   break;
}
}

I am aware that it makes no sense by itself so I will explain. I am
iterating through a (Sequel) database nodes. I am looking for a node
I.D. that is not being used. Basically, I am looking for and open
parking spot. When I find one, I insert my new data using the newly
found parking spot. I really can't figure out why I need to uniquely
identify each node by an I.D. as it is already uniquely identified by
location in the tree but that is a different matter entirely. All I
need is how to write a nice infinite 'for' loop in Ruby.

I know you are asking about the Ruby, but in your Java code, using the
variable monkey is rather confusing, and doesn't seem to have any purpose
except to hold the value true, to submit to the conditional portion of your
for loop. This isn't necessary, as you can directly place true into that
location:

for( i=0 ; true ; ++i )

···

On Tue, Sep 29, 2009 at 11:24 AM, Jake Brightmatter <brightmatter@gmail.com>wrote:

have this code in Java:

boolean monkey = true;
for(i=0; monkey; i++){
if(index[i] == null) {
   put.something.new(i);
   break;
}
}

I am aware that it makes no sense by itself so I will explain. I am
iterating through a (Sequel) database nodes. I am looking for a node
I.D. that is not being used. Basically, I am looking for and open
parking spot. When I find one, I insert my new data using the newly
found parking spot. I really can't figure out why I need to uniquely
identify each node by an I.D. as it is already uniquely identified by
location in the tree but that is a different matter entirely. All I
need is how to write a nice infinite 'for' loop in Ruby.
--
Posted via http://www.ruby-forum.com/\.

An alternate way

while true do
  # your code
  # break if <condition>
end

renard@nc.rr.com

···

On Sep 29, 12:32 pm, Paul Smith <p...@pollyandpaul.co.uk> wrote:

On Tue, Sep 29, 2009 at 5:24 PM, Jake Brightmatter

<brightmat...@gmail.com> wrote:
> have this code in Java:

> boolean monkey = true;
> for(i=0; monkey; i++){
> if(index[i] == null) {
> put.something.new(i);
> break;
> }
> }

> I am aware that it makes no sense by itself so I will explain. I am
> iterating through a (Sequel) database nodes. I am looking for a node
> I.D. that is not being used. Basically, I am looking for and open
> parking spot. When I find one, I insert my new data using the newly
> found parking spot. I really can't figure out why I need to uniquely
> identify each node by an I.D. as it is already uniquely identified by
> location in the tree but that is a different matter entirely. All I
> need is how to write a nice infinite 'for' loop in Ruby.

loop {}

> --
> Posted viahttp://www.ruby-forum.com/.

--
Paul Smithhttp://www.nomadicfun.co.uk

p...@pollyandpaul.co.uk

Ryan Davis wrote:

but honestly if you're doing this against a sequel db, you're it wrong. You should use the power of the DB instead of doing tons of roundtrips in ruby.

Right - what you want is:

SELECT id+1 FROM table AS t WHERE NOT EXISTS(SELECT * FROM table AS n WHERE t.id+1 = n.id) LIMIT 1

that is, find (just the first) successor of the first id that doesn't have a successor.

Otherwise just "SELECT max(id)+1 from table" if you don't need to fill vacated spots.

···

--
Clifford Heath, Data Constellation, http://dataconstellation.com
Agile Information Management and Design