Koans question : Don't understand the answers

Hello,

Im trying to learn ruby by using koans.

Now I have to fill in this part.

def test_some_system_objects_always_have_the_same_id
assert_equal --, false.object_id
assert_equal --, true.object_id
assert_equal --, nil.object_id
end

According to the answers I have to fill in like this :

def test_some_system_objects_always_have_the_same_id
assert_equal 0, false.object_id
assert_equal 2, true.object_id
assert_equal 4, nil.object_id
end

But how can I normally know the id of a object ?

Roelof

Roelof Wobben wrote in post #1076512:

Hello,

Im trying to learn ruby by using koans.

Now I have to fill in this part.

def test_some_system_objects_always_have_the_same_id
    assert_equal --, false.object_id
    assert_equal --, true.object_id
    assert_equal --, nil.object_id
  end

According to the answers I have to fill in like this :

def test_some_system_objects_always_have_the_same_id
    assert_equal 0, false.object_id
    assert_equal 2, true.object_id
    assert_equal 4, nil.object_id
  end

But how can I normally know the id of a object ?

puts false.object_id
puts true.object_id
puts nil.object_id

Meditate on the name of the test.

~Chris
- --
Chris Maden, text nerd <URL: http://crism.maden.org/ >
LIVE FREE: vote for Gary Johnson, Libertarian for President.
     <URL: http://garyjohnson2012.com/ > <URL: http://lp.org/ >
GnuPG fingerprint: DB08 CF6C 2583 7F55 3BE9 A210 4A51 DBAC 5C5C 3D5E

As far as i know, ruby use memory location to generate object’s id, normally any dynamic objects(runtime generate objects) will have different object_id, for example “foo”.object_id not equal with “foo”.object_id. But, any object like number, true, false ,nil and symbol all have fixed object_id

Everybody thanks for the explanation.

I have another problem.
On this :

def test_accessing_hashes_with_fetch
hash = { :one => “uno” }
assert_equal “uno”, hash.fetch(:one)
assert_raise("Class: Message: <“key not found”> —Backtrace— ./about_hashes.rb:27:in fetch' ./about_hashes.rb:27:in test_accessing_hashes_with_fetch’ ") do
hash.fetch(:doesnt_exist)
end

I get always a syntax error.

How to solve this one?

Roelof

As far as i know, ruby use memory location to generate object's id, normally any dynamic objects(runtime generate objects) will have different object_id, for example "foo".object_id not equal with "foo".object_id. But, any object like number, true, false ,nil and symbol all have fixed object_id

Although this is an implementation detail you'd be I'll advised to
rely on - on my rubinius install for example the object id of nil is
26

Fred