Hi
i have the following method
def create
length = @txt.length
i = 0
while i < (length + 1)
line = @txt[i]
line.split(’,’)
#@arr.push(a)
i += 1
end
end
this works but as soon as i take out the comment.
i get an error something about private method split beeing called on a
nil object.
I found out that this has to do with split that has to be called by self
or something.
what i like to do is have an array of the split arrays.
any ideas?
greet Eelco
assign the array returned by String.split to a variable
str = “hello,world”
arr = str.split(",")
p arr
–output:–
[“hello”, “world”]
On Wed, Jun 3, 2009 at 9:35 AM, Catsquotl [email protected] wrote:
Hi
what i like to do is have an array of the split arrays.
any ideas?
You would want something like this
def create
ary = @txt.collect{ |t| t.split(‘,’) }
end
Basically collect takes your initial array and runs through each element
and
creates a new array based on the results of the block.
John
Catsquotl wrote:
Hi
i have the following method
def create
length = @txt.length
i = 0
while i < (length + 1)
line = @txt[i]
line.split(’,’)
#@arr.push(a)
i += 1
end
end
this works but as soon as i take out the comment.
i get an error something about private method split beeing called on a
nil object.
This means that @arr is nil, that is, you are doing
nil.push(a)
So you need to initialize it first:
@arr = []
There are a few other errors in your code, for example you didn’t assign
to a:
a = line.split(',')
@arr.push(a)
and your loop should be while i < length, not while i < length+1. As has
been pointed out, there are more ruby-like ways to do this loop.