From: Jan Reitz Date: 2006-10-11T20:40:06+09:00 Subject: PHP-like Array/Hash creation in Ruby I used PHP for a long time, a little bit C# and recently started to learn about Ruby. I do like Ruby very much from the first looks It has "my_array.sort" like in c#, not that ugly (imo) "sort($myarray)" And it has q'n'd qualitys like php for example: definition at first assignment, no need for interfaces and so on. But! one thing i really miss from PHP just writing : $my_array[4][5] = "moep"; (no initialize before) this does not work in ruby, i had to my_array = Array.new(16) { Array.new 16 } first. and if the array wasn't great enough i end up with element 16 (the 17th) complaining: NoMethodError: undefined method `[]=' for nil:NilClass (this only occurs at "my_array[16][5] = 1", not at "my_array[4][16] = 1") hm, so i thought, if NilClass has no []= method, why dont i define it, (i read very often that this is rubys great adv. over most languages out there, that u can extend even the basic classes), so it becomes an array in that place... but that included "self = Array.new" which caused another complaint: "Can't change the value of self" I read alot of topics about cant change value of self, and i think that i have a different problem than these discussed before. i dont want to 1.next! => 2 so please dont tell me that i can't do that, i know that, and i know its junk i want just: hans = nil (or even omit this line) hans[1] = "test" or my_array = Array.new(16) { Array.new 16 } my_array[16][1] = 1 not: nil[1] = "test" I hope my English was well enough to be understood. - Jan Reitz