Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Arrays
Justin To
6/6/2008 10:12:00 PM
modArr = Array.new
freq = Array.new([ [0] ])
values = Array.new([ [] ])
#--------------Open the output file and process each line-----
File.open('output.txt', 'r').each { |x|
#-------------Create unique keys according to |x|---------------
#--Calculate the modulus ([add each digit]%10) and use it as hash
key--
key = 0; modF = x.each_byte { |y| key += y.chr.to_i }
#--For slight optimization, change the resulting key into a symbol
mod = (key%100).to_s.intern
#--If the key D.N.E. then add it into modArr
if(!modArr.include?(mod))
#--Add the value
values[modArr.size][0] = x.chomp
#--Add the frequency
freq[modArr.size][0] += 1
#--Add the mod
modArr[modArr.size] = mod
end
}
Hi, I'm still trying to work on the same problem that I posted a few
days ago... when i run this program, this error reads:
BLANK.rb:22: undefined method `[]=' for nil:NilClass (NoMethodError)
from BLANK.rb:7:in `each'
from BLANK.rb:7
Why is this? And how do I fix it??
Thanks in advance!!!!!
--
Posted via
http://www.ruby-...
.
2 Answers
Kevin Ballard
6/6/2008 11:04:00 PM
0
I've replied below.
On Jun 6, 2008, at 3:11 PM, Justin To wrote:
> modArr = Array.new
> freq = Array.new([ [0] ])
> values = Array.new([ [] ])
>
>
> #--------------Open the output file and process each line-----
> File.open('output.txt', 'r').each { |x|
>
> #-------------Create unique keys according to |x|---------------
> #--Calculate the modulus ([add each digit]%10) and use it as hash
> key--
> key = 0; modF = x.each_byte { |y| key += y.chr.to_i }
> #--For slight optimization, change the resulting key into a symbol
> mod = (key%100).to_s.intern
>
>
> #--If the key D.N.E. then add it into modArr
>
> if(!modArr.include?(mod))
>
> #--Add the value
> values[modArr.size][0] = x.chomp
>
>
> #--Add the frequency
> freq[modArr.size][0] += 1
>
>
> #--Add the mod
> modArr[modArr.size] = mod
>
>
> end
>
> }
>
>
> Hi, I'm still trying to work on the same problem that I posted a few
> days ago... when i run this program, this error reads:
>
> BLANK.rb:22: undefined method `[]=' for nil:NilClass (NoMethodError)
> from BLANK.rb:7:in `each'
> from BLANK.rb:7
>
>
> Why is this? And how do I fix it??
You're using a rather unconventional way of appending to an array,
i.e. ary[ary.size] = value. This works in the general case. Where it
doesn't work is in your code where you say, effectively, ary[ary.size]
[0] = value. The problem is that ary[ary.size] is returning nil.
-Kevin Ballard
--
Kevin Ballard
http://ke...
kevin@sb.org
http://www.til...
Justin To
6/6/2008 11:55:00 PM
0
modArr = Array.new
freq = Array.new([ [0] ])
values = Array.new([ [] ])
#--------------Open the output file and process each line-----
File.open('output.txt', 'r').each { |x|
#-------------Create unique keys according to |x|---------------
#--Calculate the modulus ([add each digit]%10) and use it as hash
key--
key = 0; modF = x.each_byte { |y| key += y.chr.to_i }
#--For slight optimization, change the resulting key into a symbol
mod = (key%100).to_s.intern
if(!modArr.include?(mod))
#--Add the value
values[modArr.size].push(x.chomp)
#--Add the frequency
freq[modArr.size].push(1)
#--Add the mod
modArr.push(mod)
end
}
BLANK.rb:22: undefined method `push' for nil:NilClass (NoMethodError)
from BLANK.rb:7:in `each'
from BLANK.rb:7
??
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Arrays
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password