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

**URL:** <https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035>\
**Category:** Ruby\
**Created:** [May 8, 2008, 2:09pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035 "2008-05-08T14:09:55Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ribes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f4b2a3/32.png) [@ribes](https://www.ruby-forum.com/u/ribes)\
**Post date:** [May 8, 2008, 2:09pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035/1 "2008-05-08T14:09:55Z")

</div>

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 =
```

---

<div class="post-metadata">

**Author:** ![ribes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f4b2a3/32.png) [@ribes](https://www.ruby-forum.com/u/ribes)\
**Post date:** [May 8, 2008, 2:23pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035/2 "2008-05-08T14:23:31Z")

</div>

On Thu, May 8, 2008 at 2:09 PM, Victor R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.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.

---

<div class="post-metadata">

**Author:** ![ribes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f4b2a3/32.png) [@ribes](https://www.ruby-forum.com/u/ribes)\
**Post date:** [May 8, 2008, 2:27pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035/3 "2008-05-08T14:27:37Z")

</div>

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,

---

<div class="post-metadata">

**Author:** ![ribes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f4b2a3/32.png) [@ribes](https://www.ruby-forum.com/u/ribes)\
**Post date:** [May 8, 2008, 2:29pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035/4 "2008-05-08T14:29:23Z")

</div>

On Thu, May 8, 2008 at 2:09 PM, Victor R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.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 }

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.

---

<div class="post-metadata">

**Author:** ![ribes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f4b2a3/32.png) [@ribes](https://www.ruby-forum.com/u/ribes)\
**Post date:** [May 8, 2008, 2:34pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035/5 "2008-05-08T14:34:05Z")

</div>

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

Thank you Jano!

---

<div class="post-metadata">

**Author:** ![ribes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f4b2a3/32.png) [@ribes](https://www.ruby-forum.com/u/ribes)\
**Post date:** [May 8, 2008, 2:36pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035/6 "2008-05-08T14:36:28Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ribes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f4b2a3/32.png) [@ribes](https://www.ruby-forum.com/u/ribes)\
**Post date:** [May 8, 2008, 2:44pm UTC](https://www.ruby-forum.com/t/any-reason-why-this-code-should-not-work-the-ruby-way-p270/137035/7 "2008-05-08T14:44:42Z")

</div>

Thank you Rolando. It was my silly typo!
