わかりました、私は答えを求めるためにここにいるのではありません。しかし、正直なところ、私はクラス変数があまり得意ではありません。ですから、このコードで私を案内していただければ幸いです。
これらのドキュメントでクラス変数を読みました。私はそれをどういうわけか理解しています。しかし、それは私自身の使用のためにそれを適用することになります。私は混乱するでしょう。
class Square
@@sqArray = {}
#attr_accessor :length
def initialize
if defined?(@@length)
randno = "%s" % [rand(20)]
@@length = randno.to_i
@@sqArray = @@length
else
randno = "%s" % [rand(20)]
@@length = randno.to_i
@@sqArray = @@length
end
end
def Area
@@area = @@length * @@length
return @@area
@@sqArray[@@length.to_sym] = @@area
puts @@sqArray
end
end
s1 = Square.new
puts s1.Area
このコードについて説明します。基本的に、Square オブジェクトを作成するたびに、initialize メソッドに移動します。乱数が生成されて @@length に渡され、@@length がハッシュ @@sqArray にキーとして割り当てられます。しかし、問題は、新しいオブジェクト s1 を作成するときです。エリアを表示したいときは、ハッシュ @@sqArray をテストして、長さをキーとして、面積を値として出力します。しかし今、問題はその領域のみを返すことだけです。たとえば、114 のみ。たとえば [ 24 => 114] であるとします。