ruby中的所有类都继承自具有to_s方法的对象类,当您尝试打印对象时,此对象上调用to_s方法将其值转换为string.But在我的下面代码中我已覆盖to_s方法仍然是打印那些不可读的数据。为什么呢?
class Employee
attr_reader :name,:salary
def name=(value)
if value == " "
raise "Name can not be empty"
end
@name=value
end
def salary=(value)
if value <0
raise "Salary can not be negative"
end
@salary=value
end
def print_pay_stub
puts "Name : #{@name}"
pay_for_period= (@salary/365)*30
puts"Pay this period: #{pay_for_period}"
end
def to_s
puts ("I am a hi man")
end
end
ob=Employee.new
ob.name="akash"
ob.salary=900000
ob.print_pay_stub()
puts ob
输出:
Name : akash
Pay this period: 73950
I am a hi man
#<Employee:0x2b9bb28>
它打印了重写方法to_s中的内容,但为什么会有额外的字符串。
答案 0 :(得分:1)
def to_s
"I am a hi man"
end
您需要返回值,而不是输出它。