【发布时间】:2011-05-02 02:09:57
【问题描述】:
我是ruby新手,当我学习ruby的Time类时(实际上我是按照VTC视频)我发现了一些我无法制作的东西,我想根据他的年龄来计算一个人的出生年份,
例如,当一个人告诉他的年龄是“20”,那么我应该计算他的出生年份。
class Person
attr_accessor :name,:age,:year_born
def initialize(name,age)
@name=name
@age=age
@year_born=(Time.now - age*31556962).year
end
def days_alive
@age*365
end
end
在下面的代码中,除了
@year_born=(Time.now - age*31556962).year
我尝试时遇到错误
Person.new("name",43).year_born
上面写着:
ArgumentError: time must be positive
./person.rb:6:in `-'
./person.rb:6:in `initialize'
我知道 Time.now 会返回 1970 年的秒数,也就是说
(2011-1970)<43
所以Time.now-43*31556962 返回一个无效值,但我想知道如何实现我的要求?
【问题讨论】:
-
一般性评论。一个人的出生年份不可能仅仅通过某个时间的年龄来判断。您需要更多信息(出生月份、日期,甚至在最坏的情况下最多几秒钟)才能做到这一点。
-
:) 感谢您的关注。其实并不是真正的应用,只是教程中的一个例子。
-
我明白了。很好,你不会有麻烦。 (但这应该是教程中的一个错误。)
-
我想是的。顺便说一句,在win系统中使用scite有什么经验吗?
-
不幸的是,不是。我主要使用 linux。