小编odd*_*zen的帖子

使用`===`(包含运算符)比较类

这事实上TypeOfClass === TypeOfClass是false给我的印象是反直觉.在以下代码中,即使field.class是同一个类,它的计算结果为false:

case field.class
when Fixnum, Float
  field + other_field
when Date, DateTime, Time
  field
else
  puts 'WAT?'
end
Run Code Online (Sandbox Code Playgroud)

我这样做了:

Fixnum === Fixnum # => false
Class === Class   # => true
Run Code Online (Sandbox Code Playgroud)

我发现另一个线程:

Integer === 3 # => true
Fixnum === 3  # => true
3.class       # => Fixnum
Run Code Online (Sandbox Code Playgroud)

我找不到这种语言设计的原因.语言设计师在这种行为中思考的是什么?

我认为这与另一个帖子中提供的答案有关.假设Numeric === Integera Integer是一种更具体的类型,这并不是不自然的Numeric.但是,它不是:

Numeric === Integer #=> false
Run Code Online (Sandbox Code Playgroud)

我认为case陈述或 …

ruby types class switch-statement comparison-operators

1
推荐指数
1
解决办法
266
查看次数