#(1 2 3) * #(4 5 6) "=> #(4 10 18) " [1, 2, 3] * [4, 5, 6] #=> error (0...3).collect {|i| [1, 2, 3][i] * [4, 5, 6][i]} #=> [4, 10, 18]
#(1 2 3) * 3 "=> #(3 6 9) " [1, 2, 3] * 3 #=> [1, 2, 3, 1, 2, 3, 1, 2, 3] Array streamContents: [: s | 3 timesRepeat: [s nextPutAll: #(1 2 3)]] "=> #(1 2 3 1 2 3 1 2 3) " [1, 2, 3].collect {|e| e * 3} #=> [3, 6, 9]
#(1 2 3) + 3 "=> #(4 5 6)" [1, 2, 3] + 3 #=> error [1, 2, 3].collect {|e| e + 3} #=> [4 5 6]
#(1 2 3) + #(4 5 6) "=> #(5 7 9) " [1, 2, 3] + [4, 5, 6] #=> [1, 2, 3, 4, 5, 6] #(1 2 3), #(4 5 6) "=> #(1 2 3 4 5 6) " (0...3).collect {|i| [1, 2, 3][i] + [4, 5, 6][i]} #=> [5, 7, 9]
念のため、#=> で結果が示してあるのが Ruby で、"=> " が Squeak の Smalltalk です。Smalltalk は " " でコメントになります。ちなみに、文字列リテラル式には ' '(シングルクオート)を使います。
で、ダブルディスパッチなんか使ってますが、基本的に Smalltalk の #Collection >> #* とか #+ の中では、上で Ruby で書いていることと同じことをしているわけです。