为什么我的to_s方法在ruby中返回0?

时间:2013-02-20 21:54:50

标签: ruby

我正在尝试在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

1 个答案:

答案 0 :(得分: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等任何样式指南。

相关问题