0

ruby で比較的単純なアプリを構築しようとしています。ただし、オブジェクトが呼び出された0とき以外はオブジェクトを返すことができません。puts obj.to_sコードの品質が悪い可能性があることは理解しています (ヒントは気にしません)。

助けてください!

class Docpart
  def Docpart.new(inputAsString,typeAsInteger)
@value = inputAsString
@type = typeAsInteger.to_i # 0 = title, 1 = text, 2 = equation (can't be done yet), 3 = table
  end

  def Docpart.to_s
return "Type is #{@type}, value is #{@value}"
  end
end

module Tests
  def Tests.test1()
filetree = Array.new(0) 
filetree.push( Docpart.new("Title",0))
filetree.each{|obj| puts obj.to_s}
return filetree[0]
  end
end

puts Tests.test1.to_s
gets.chomp
4

1 に答える 1

3

to_sインスタンス1ではなくクラスメソッドを定義したためです。また、Ruby でのコンストラクターの記述も少し異なります。これをそのように書く必要があります:

class Docpart
  def initialize(inputAsString,typeAsInteger)
    @value = inputAsString
    @type = typeAsInteger.to_i # 0 = title, 1 = text, 2 = equation (can't be done yet), 3 = table
  end

  def to_s
    "Type is #{@type}, value is #{@value}"
  end
end

module Tests
  def self.test1
    filetree = []
    filetree << Docpart.new("Title",0)

    filetree.each{ |obj| puts obj.to_s }

    filetree[0]
  end
end

puts Tests.test1.to_s
gets.chomp

PS Ruby に関する本や、Githubbersbbatsov oneなどのスタイルガイドを読んでください。

于 2013-02-20T22:02:09.143 に答える