我正在运行这一行:
<%= @date[i].created_at.strftime('%d').to_i.class %>
输出是固定数字而不是整数。这是为什么呢?
从控制器:
@date = Lesson.find(:all, :order => 'created_at ASC')
Ruby 中没有这样的事情int
。 Fixnum
是适合机器词的小数字类,如1
或2
,它是Integer
的子类。检查以下内容:
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
所以你的价值是一个Fixnum
,一个Integer
,一个Numeric
和一个Object
同时;)这种效应称为多态性,在这种情况下可能会让您感到惊讶,因为在其他一些编程语言中,数字以特殊方式处理(它们具有某种"本机"类型)。在 Ruby 中,数字只是对象。
Fixnum 包含可以用本机计算机字(减去 1 位)表示的整数值。如果对 Fixnum 的任何操作超过此范围,则该值将自动转换为 Bignum。
Fixnum
实际上是Integer
的孩子班。
请参阅 http://www.ruby-doc.org/core-1.9.3/Integer.html