Class: VectorSpace::SimpleVector

Inherits:
Object
  • Object
show all
Includes:
Enumerable, VectorSpace
Defined in:
lib/vector_space/simple_vector.rb

Direct Known Subclasses

SimpleIndexedVector

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from VectorSpace

included

Constructor Details

#initialize(attributes = {}) ⇒ SimpleVector

Returns a new instance of SimpleVector.



7
8
9
# File 'lib/vector_space/simple_vector.rb', line 7

def initialize(attributes = {})
  @attributes = attributes
end

Class Attribute Details

.description_prefixObject (readonly)

Returns the value of attribute description_prefix.



41
42
43
# File 'lib/vector_space/simple_vector.rb', line 41

def description_prefix
  @description_prefix
end

.description_suffixObject (readonly)

Returns the value of attribute description_suffix.



41
42
43
# File 'lib/vector_space/simple_vector.rb', line 41

def description_suffix
  @description_suffix
end

.zero_descriptionObject (readonly)

Returns the value of attribute zero_description.



41
42
43
# File 'lib/vector_space/simple_vector.rb', line 41

def zero_description
  @zero_description
end

Class Method Details

.description_separatorObject



65
66
67
# File 'lib/vector_space/simple_vector.rb', line 65

def description_separator
  @description_separator || ' and '
end

.has_description_prefix(description_prefix) ⇒ Object



49
50
51
# File 'lib/vector_space/simple_vector.rb', line 49

def has_description_prefix(description_prefix)
  @description_prefix = description_prefix
end

.has_description_separator(description_separator) ⇒ Object



57
58
59
# File 'lib/vector_space/simple_vector.rb', line 57

def has_description_separator(description_separator)
  @description_separator = description_separator
end

.has_description_suffix(description_suffix) ⇒ Object



53
54
55
# File 'lib/vector_space/simple_vector.rb', line 53

def has_description_suffix(description_suffix)
  @description_suffix = description_suffix
end

.has_dimension(dimension, attributes = {}) ⇒ Object



43
44
45
46
47
# File 'lib/vector_space/simple_vector.rb', line 43

def has_dimension(dimension, attributes = {})
  define_method (reflection = super(dimension, attributes)).getter do
    reflection.value(@attributes[dimension])
  end
end

.has_zero_description(zero_description) ⇒ Object



61
62
63
# File 'lib/vector_space/simple_vector.rb', line 61

def has_zero_description(zero_description)
  @zero_description = zero_description
end

Instance Method Details

#[](component) ⇒ Object



23
24
25
# File 'lib/vector_space/simple_vector.rb', line 23

def [](component)
  project(component)
end

#eachObject



27
28
29
# File 'lib/vector_space/simple_vector.rb', line 27

def each
  dimensions.each do |dimension| yield [dimension, project(dimension)] end
end

#to_sObject



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/vector_space/simple_vector.rb', line 11

def to_s
  if zero? && zero_description
    zero_description
  else
    [
      description_prefix,
      dimensions.map { |dimension| describe_value(dimension) }.compact.join(description_separator),
      description_suffix
    ].join
  end
end