我想在初始化方法中調用類中的方法。這是不允許的?我最初在課堂外有方法嘗試並將其用作全局方法。當前方法試圖返回創建的矩陣,然後initialize方法將返回的矩陣保存到實例變量中。如何從初始化方法調用類方法?
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)'),其未示出。 –