アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで
- 作者: Tom Stuart,笹田耕一,笹井崇司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/09/18
- メディア: 大型本
- この商品を含むブログ (9件) を見る
こんな感じ。Ruby の構造体は、Struct.new もまたクラスなので、これを継承できるのです(Structクラスを継承するのではないですよ)。Vector クラスを作って、ベクトルの和と内積を実装してみました。
class Vector < Struct.new(:x, :y) def +(a) Vector.new(self.x + a.x, self.y + a.y) end def *(a) self.x * a.x + self.y * a.y end end v1 = Vector.new( 1, 4) v2 = Vector.new(-3, 2) p v1 + v2 #=><struct Vector x=-2, y=6> p v1 * v2 #=>5
こういう仕方で構造体を使うのは初めて見ました。自分が知らないだけですか? ただこれだと、attr_accessor が使えません。これは不便ですね。