2007年5月14日 星期一

讓Ruby支援PHP陣列$test[]='xxx';的方法

最近開始使用Ruby這個好玩的程式語言,

發現平時PHP用得挺習慣的

$a[]=1;
$a[]=2;
的陣列使用方式在Ruby 1.8中沒有這種用法,
當我使用Ruby要做
a=[];
a[]=1;
a[]=2;
a[]=3;

會出現底下的錯誤訊息。
[17,17]:[234,240]: wrong number of arguments (1 for 2) (ArgumentError)

還好Ruby可以覆載運算式,這來幫Ruby加上這功能吧

class Array
def []=(value)
self.push(value);
end
end

就是這麼簡單,測試一下吧

a=[];
a[]=1;
a[]=2;
a[]=3;
a[]=['a','b'];
puts a[3].class;#=>Array