Association

General binary association allows one object to be associated with another. It has a variety of uses, link-lists, simple ordered maps and mixed collections, among them.

Usage

Associations can be used to draw simple relationships.

  :Apple >> :Fruit
  :Apple >> :Red

  :Apple.associations #=> [ :Fruit, :Red ]

It can also be used for simple lists of ordered pairs.

  c = [ :a >> 1, :b >> 2 ]
  c.each { |k,v| puts "#{k} associated with #{v} }

produces

  a associated with 1
  b associated with 2

Limitations

The method :>> is used to construct the association. It is a rarely used method so it is generally available. But you can‘t use an Association while extending any of the following classes becuase they use #>> for other things.

  Bignum
  Fixnum
  Date
  IPAddr
  Process::Status
Methods
Included Modules
Classes and Modules
Module Association::Kernel
Constants
REFERENCE = Hash.new{ |h,k,v| h[k]=[] }
  Store association references.
Attributes
[RW] index
[RW] value
Public Class methods
[](*args)
# File lib/facets/association.rb, line 105
  def self.[](*args)
    new(*args)
  end
new(index, value=nil)
# File lib/facets/association.rb, line 109
  def initialize(index, value=nil)
    @index = index
    @value = value
  end
Public Instance methods
<=>(assoc)
# File lib/facets/association.rb, line 114
  def <=>(assoc)
    return -1 if self.value < assoc.value
    return  1 if self.value > assoc.value
    return  0 if self.value == assoc.value
  end
inspect()
# File lib/facets/association.rb, line 130
  def inspect
    %{#{@index.inspect} >> #{@value.inspect}}
  end
invert!()
# File lib/facets/association.rb, line 120
  def invert!
    temp = @index
    @index = @value
    @value = temp
  end
to_ary()
# File lib/facets/association.rb, line 134
  def to_ary
    [ @index, @value ]
  end
to_s()
# File lib/facets/association.rb, line 126
  def to_s
    return "#{index.to_s}#{value.to_s}"
  end