1
# Stores <x, y, z> triplet in database.
class Vector < ActiveRecord::Base
composed_of :vector, :mapping => [%w(x x), %w(y y), %w(z z)]
end
# Immutable vector class.
class Vector
attr_reader :x, :y, :z
def initialize(x, y, z)
@x, @y, @z = x, y, z
end
def add(v)
Vector.new(@x + v.x, @y + v.y, @z + v.z)
end
# etc.
end
どのように接続して区別しますか?私はそれだけのARベクトルを(とすべてのメソッドと操作をそこに置く)良い考えではないと信じて..私は行方不明のいくつかのパターンはありますか?私はDbVectorや何かに最初の名前を変更することができますが、より良い解決策があるのだろうかと思います。データベースVectorクラスとフレームワークVectorクラスを区別する方法は?
私は、モジュールを使用することになると思います。モジュールを使用して名前空間を使用するのがなぜ好都合なのかを気にする必要はありませんか?私は実際には2つの違いを理解していません。 – randomguy
@randomguy - 名前空間は、同じ名前のクラス、変数などを何らかの並べ替えの階層に入れて曖昧さをなくすための一般的な用語です。モジュールは、名前空間の目的で使用できるRubyの再利用可能なコードのグループです。 Jakubの例では、 'DB :: Vector'は' DB'というモジュールの中で 'Vector'と呼ばれるクラスです。 Rubyはこれをトップレベルの 'Vector'クラスとは異なるクラスとして扱います。 –
'class DB :: Vector'を書くことは' module DB;と書くことと同じです。クラスベクトル。 –