我是说:
<%= @date[i].created_at.strftime('%d').to_i.class %>
输出是一个fixnum而不是int。这是为什么?
从控制器:
@date = Lesson.find(:all, :order => 'created_at ASC')

最佳答案

在Ruby中没有这样的东西int是一类很小的数字,如Fixnum1可以放入机器字中,它是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

因此,您的值同时是aInteger、aFixnum、aInteger和aNumeric;此效果称为polymorphism,在这种情况下,您可能会感到惊讶,因为在某些其他编程语言中,数字是以特殊方式处理的(它们具有某种“本机”类型)在Ruby中,数字只是对象。

关于ruby-on-rails - 为什么使用.to_i而不是整数将我的字符串转换为Fixnum?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10762118/

10-09 07:49