Any reason why this code should not work - The Ruby Way, p270

I lifted the following code from The Ruby way and tried to use it.
It does not output anything.
Do anyone knows why?

Thank you

Victor

##############################

This code adds a count method to the Array class

This code was lifted from:

The Ruby Way

Second Edition

By: Hal F.

Page: 270

##############################
class Array
def count
k=Hash.new(0)
self.each{|x| k[x]+1 }
k
end
end

@aa = [

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789],

[123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789,123456789]
]

@ga = [
        [0,0,0,0,1,9,0,4,0],
        [0,0,4,8,0,0,6,0,0],
        [7,5,0,0,0,0,0,0,2],
        [0,9,0,1,0,2,0,0,4],
        [0,0,0,0,0,3,0,0,0],
        [5,0,0,4,0,6,0,3,0],
        [8,0,0,0,0,0,0,7,3],
        [0,0,6,0,0,8,4,0,0],
        [0,1,0,2,9,0,0,0,0]
        ]

Test the count method:

     f = @ga[0].count
     puts "f = #{f}"           # The output here was: f =

     f = @aa.count
     puts "f = #{f}"           # The output here was: f =

On Thu, May 8, 2008 at 2:09 PM, Victor R. [email protected]ain.invalid
wrote:

This code was lifted from:

The Ruby Way

Second Edition

By: Hal F.

Page: 270

##############################
class Array
def count
k=Hash.new(0)

  •         self.each{|x| k[x]+1 }
    
  •         self.each{|x| k[x]+=1 }
    

notice the = sign, you have not stored the result anywhere.

On May 8, 2008, at 8:09 AM, Victor R. wrote:

This code was lifted from:

  end

end

I think it should read:

def count
k = Hash.new(0)
self.each { |x| k[x] += 1 }
k
end

The problem is that inside the ‘each’ loop you’re not asigning any
value.
regards,

On Thu, May 8, 2008 at 2:09 PM, Victor R. [email protected]
wrote:

This code was lifted from:

The Ruby Way

Second Edition

By: Hal F.

Page: 270

##############################
class Array
def count
k=Hash.new(0)
self.each{|x| k[x]+1 }

I think this line should be
self.each{|x| k[x] += 1}

(notice the = sign, so the value gets assigned to the key).
Otherwise you are never adding entries to the hash

       k
  end

end

Hope this helps,

Jesus.

Embarrassing!!! To say the least!
Even when I copy, I don’t copy right!

Thank you Jano!

Yes, Jesus - Thank you!
It is, as I said earlier, embarrassing!

BTW Jesus, on what country are you located? I’m in Brooklyn New York,
USA.

Thank you Rolando. It was my silly typo!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs