Я пытаюсь вызвать метод в классе во время его метода инициализации. Разве это не разрешено? Изначально у меня был метод вне класса, чтобы попытаться использовать его как глобальный метод. Текущий метод пытается вернуть созданную матрицу, а затем метод инициализации сохраняет возвращенную матрицу в переменную экземпляра.
class Member
def setMatrix(a, i, l)
puts "here"
m = Matrix.zero(6)
m[0,0] = a*l**2/i
m[0,3] = -a*l**2/i
m[1,1] = 12
m[1,2] = 6*l
m[1,4] = -12
m[1,5] = 6*l
m[2,1] = 6*l
m[2,2] = 4*l**2
m[2,4] = -6*l
m[2,5] = 2*l**2
m[3,0] = -a*l**2/i
m[3,3] = a*l**2/i
m[4,1] = -12
m[4,2] = -6*l
m[4,4] = 12
m[4,5] = -6*l
m[5,1] = 6*l
m[5,2] = 2*l**2
m[5,4] = -6*l
m[5,5] = 4*l**2
return m
#@k = m
end
def initialize(a, i, l)
@area = a
@i = i
@length = l
@k = setMatrix(a, i, l)
end
end
Выполнение этого возвращает эту ошибку
`'setMatrix': private method '[]=' called for #<Matrix:0x00000001186e00> (NoMethodError)
from truss_solver.rb:71:in 'initialize'
from truss_solver.rb:86:in 'new'
from truss_solver.rb:86:in 'block in <main>'
from truss_solver.rb:85:in 'each'
from truss_solver.rb:85:in '<main>'`
Я хотел бы сделать переменную экземпляра матрицы при создании экземпляра класса. Я также пытался, чтобы метод setMatrix сохранял матрицу напрямую в @k вместо возврата матрицы, и это дало аналогичную ошибку. Как еще я могу добиться того, чего хочу?
Member
(например,Member.new(1,2,3)
), который не показан. - person Cary Swoveland   schedule 21.04.2016