我是说:<%= @date[i].created_at.strftime('%d').to_i.class %>
输出是一个fixnum而不是int。这是为什么?
从控制器:@date = Lesson.find(:all, :order => 'created_at ASC')
最佳答案
在Ruby中没有这样的东西int
是一类很小的数字,如Fixnum
或1
可以放入机器字中,它是2
的一个子类检查以下内容:
irb(main):004:0> 42.class
=> Fixnum
irb(main):005:0> 42.is_a? Fixnum
=> true
irb(main):006:0> 42.is_a? Integer
=> true
irb(main):007:0> 42.is_a? Numeric
=> true
irb(main):008:0> 42.is_a? Object
=> true
因此,您的值同时是a
Integer
、aFixnum
、aInteger
和aNumeric
;此效果称为polymorphism,在这种情况下,您可能会感到惊讶,因为在某些其他编程语言中,数字是以特殊方式处理的(它们具有某种“本机”类型)在Ruby中,数字只是对象。关于ruby-on-rails - 为什么使用.to_i而不是整数将我的字符串转换为Fixnum?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10762118/