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