Range


#1

another code example from my book doesnt work with the ruby interpreter

parts = (“Part A” … “Part G”)
parts.length #â??> 7

that spits out a error that says it doesnt recognize the length method.

I realize this question is pretty simple but i am a begining programmer.
I am really enjoying the response time in this forum, i usually get a
response in about 5 minutes any time of day :smiley:


#2

corey konrad wrote:

another code example from my book doesnt work with the ruby interpreter

parts = (“Part A” … “Part G”)
parts.length #â??> 7

that spits out a error that says it doesnt recognize the length method.

I realize this question is pretty simple but i am a begining programmer.
I am really enjoying the response time in this forum, i usually get a
response in about 5 minutes any time of day :smiley:

Try with [ brackets ]

parts = [“Part A” , “Part B”, “Part G”]
p parts.length #â??> 7

Ytoba


#3

On 5/10/06, corey konrad removed_email_address@domain.invalid wrote:

another code example from my book doesnt work with the ruby interpreter

parts = (“Part A” … “Part G”)
parts.length #?> 7

A range is a specification which can be used for making ordered lists
(“lists” is not a ruby word). You can’t count the elements of a range
because there aren’t any, except for the two objects specifying the
beginning and end of the range.

You can make a “list” from a range. In fact, you can make an array
from a range and then count the objects in the array.

For example:
parts = (“Part A” … “Part G”)
parts_array = parts.to_a
parts.length # -> 7

which can be shortened to “parts.to_a.length”.


#4

2006/5/10, stuart yarus removed_email_address@domain.invalid:

You can make a “list” from a range. In fact, you can make an array
from a range and then count the objects in the array.

For example:
parts = (“Part A” … “Part G”)
parts_array = parts.to_a
parts.length # -> 7

which can be shortened to “parts.to_a.length”.

Another nice way to do this is to use inject. IMHO this
implementation could also go into Enumerable as a default
implementation:

(“Part A” … “Part G”).inject(0) {|s,| s+1}
=> 7

Kind regards

robert


#5

stuart yarus wrote:

On 5/10/06, corey konrad removed_email_address@domain.invalid wrote:

another code example from my book doesnt work with the ruby interpreter

parts = (“Part A” … “Part G”)
parts.length #�> 7

A range is a specification which can be used for making ordered lists
(“lists” is not a ruby word). You can’t count the elements of a range
because there aren’t any, except for the two objects specifying the
beginning and end of the range.

You can make a “list” from a range. In fact, you can make an array
from a range and then count the objects in the array.

For example:
parts = (“Part A” … “Part G”)
parts_array = parts.to_a
parts.length # -> 7

which can be shortened to “parts.to_a.length”.

hmm ok i guess the author made a mistake in this book i just wanted to
check to make sure it wasnt a bug in my ruby or something.


#6

On May 10, 2006, at 12:15 AM, corey konrad wrote:

another code example from my book doesnt work with the ruby
interpreter

parts = (“Part A” … “Part G”)
parts.length #?> 7

that spits out a error that says it doesnt recognize the length
method.

Range#length was removed between 1.6.8 and 1.8.mumble.

I realize this question is pretty simple but i am a begining
programmer.
I am really enjoying the response time in this forum, i usually get a
response in about 5 minutes any time of day :smiley:

Try using ri.

$ ri Range
[…]
Instance methods:

  ==, ===, begin, each, end, eql?, exclude_end?, first, hash,
  include?, inspect, last, member?, step, to_s


Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com