From: Jules Date: 2006-10-11T21:10:09+09:00 Subject: Re: PHP-like Array/Hash creation in Ruby Could you post some real php code that uses this feature? It isn't a problem if you code it right. Instead of: a = nil a[12] = "something" You can just do: a = [] a[12] = "something" and instead of: a = nil a[12][0] = "foo" a[12][1] = "bar" a[12][2] = "baz" You use: a = [] a[12] = ["foo", "bar", "baz"] Jan Reitz wrote: > 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