for loop

M

Martin Durai

Consider the following for loop in 'C' or 'c++' or 'java'

for (i=namespaceEnd - 1; i >= 0; i--)

Please help me with code to do the same functionality in ruby
 
C

Carl

Martin Durai said:
Consider the following for loop in 'C' or 'c++' or 'java'

for (i=namespaceEnd - 1; i >= 0; i--)

Please help me with code to do the same functionality in ruby

How about this:

(namespace_end - 1).downto(0) { |x| puts x }

Hope that helps,
Carl.
 
M

Martin Durai

Thank you carl, iam very new to this language

sorry carl could you help with this code fully

for( int i = namespaceEnd -1; i >= 0; i--) {
if( prefix.equals( namespacePrefix[ i ] ) ) {
return namespaceUri[ i ];
}


thank you in advance
 
T

Todd Burch

Martin said:
Thank you carl, iam very new to this language

sorry carl could you help with this code fully

for( int i = namespaceEnd -1; i >= 0; i--) {
if( prefix.equals( namespacePrefix[ i ] ) ) {
return namespaceUri[ i ];
}


thank you in advance

(namespace_end - 1).downto(0) { |x|
return namespaceUri[x] if prefix==namespacePrefix[x] }

Todd
 
C

Carl

Martin Durai said:
Thank you carl, iam very new to this language

sorry carl could you help with this code fully

for( int i = namespaceEnd -1; i >= 0; i--) {
if( prefix.equals( namespacePrefix[ i ] ) ) {
return namespaceUri[ i ];
}


thank you in advance

I suspect you're looking for the element in the namespaceUri
array which is at the position determined by looking up the
position of 'prefix' in the namespacePrefix array (how very
unsettling). Assuming namespaceEnd is actually the count of
elements in the namespacePrefix array, would this work?

your_value = (i = namespace_prefix.index(prefix)) ?
namespace_uri :
nil

Where 'your_value' will now contain the namespace_uri value,
or nil if it was not found in namespace_prefix

If i've misunderstood your question, post back with the values
of prefix, namespacePrefix, namespaceUri and namespaceEnd, and
what you expect to get out of it and I'll see if I can't help.
 
C

Carl

Todd Burch said:
Martin said:
Thank you carl, iam very new to this language

sorry carl could you help with this code fully

for( int i = namespaceEnd -1; i >= 0; i--) {
if( prefix.equals( namespacePrefix[ i ] ) ) {
return namespaceUri[ i ];
}


thank you in advance

(namespace_end - 1).downto(0) { |x|
return namespaceUri[x] if prefix==namespacePrefix[x] }

Todd

I'm getting a 'LocalJumpError: unexpected return' error when
I try to return from within a downto block, is this supported
in your version?

Carl.
 
L

Lloyd Linklater

Martin said:
Consider the following for loop in 'C' or 'c++' or 'java'

for (i=namespaceEnd - 1; i >= 0; i--)

Please help me with code to do the same functionality in ruby

ruby does not really have a for loop as such but there are various ways
to get the job done. You saw the upto approach. Here is another:


namespaceEnd.times do
# your code in here
end

now, this works for 0..namespace - 1 automatically. If you need to run
in reverse, can use the downto or a calculation.

namespaceEnd.times do |my_var|
some_array[namespaceEnd - my_var] = some_val
end

but that is clunky. If you are iterating through an array you can use
the each loop:

my_arr = ["aaa", "bbb", "ccc", "ddd"]
my_arr.each_with_index {|str, idx| puts "#{idx}. #{str}"}

=>
0. aaa
1. bbb
2. ccc
3. ddd

If you want only the values, use my_arr.each
If you want only the index position, use my_arr.each_index

HTH
 
P

Paul McMahon

Thank you carl, iam very new to this language

sorry carl could you help with this code fully

for( int i =3D namespaceEnd -1; i >=3D 0; i--) {
if( prefix.equals( namespacePrefix[ i ] ) ) {
return namespaceUri[ i ];
}


thank you in advance

You might consider using an array of namespace objects instead of parall=
el =

arrays

class Namespace
attr_reader :prefix, :uri
def initialize(prefix, uri)
@prefix =3D prefix
@uri =3D uri
end
end

namespaces =3D [ Namespace.new("prefix", "uri"), ...]

then your code becomes something like:

matching_namespace =3D namespaces.find {|namespace| namespace.prefix =3D=
=3D =

prefix)
return matching_namespace ? matching_namespace.uri : nil
 
C

Carl

Paul McMahon said:
You might consider using an array of namespace objects instead of parallel
arrays

class Namespace
attr_reader :prefix, :uri
def initialize(prefix, uri)
@prefix = prefix
@uri = uri
end
end

namespaces = [ Namespace.new("prefix", "uri"), ...]

then your code becomes something like:

matching_namespace = namespaces.find {|namespace| namespace.prefix ==
prefix)
return matching_namespace ? matching_namespace.uri : nil

Good point.
I suspect in this case a plain old Hash might do wonders to simplify
the problem...

Carl.
 
M

Martin Durai

Sorry the code is running well in my system. I didnt got any error. I
have checked the code with my applications.
 
R

Robert Klemme

Consider the following for loop in 'C' or 'c++' or 'java'

for (i=namespaceEnd - 1; i >= 0; i--)

Please help me with code to do the same functionality in ruby

Did you actually read a tutorial or book about the language? If not,
it's probably easier to do that vs. trying to cover all these basic
questions via newsgroup...

Cheers

robert
 
J

Just Another Victim of the Ambient Morality

Martin Durai said:
Consider the following for loop in 'C' or 'c++' or 'java'

for (i=namespaceEnd - 1; i >= 0; i--)

Please help me with code to do the same functionality in ruby

I'm surprised no one's suggested the obvious:


namespace.reverse_each do |i|
# Do something with i
end


...this assumes you don't actually need an index, which is usually the
case. It also assumes that namespaceEnd is the end of a container called
"namespace," or some such...

If you need the index, instead of the array, you'll have to do something
wild and zany, like:


namespace.reverse.each_index do |i|
# Do something with i
end


...does this help?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top