我正在做一些case.. when..
,我发现了这种行为。
case vehicle.class
when Bike
puts "This is a Bike"
when Car
puts "This is a car"
else
puts "May be it's an UFO."
raise "ALIENS"
end
我发现,即使变量vehicle
是 的一个实例Bike
,它也不会产生输出“这是一辆自行车”。相反,它引发了一个异常。
我觉得这很奇怪,因为以下代码输出It's a string
.
case "FooBar"
when String
puts "It's a string"
else
puts "It's not a string"
end
我在 live shell 中进行了尝试,better_errors
发现了以下内容。
>> vehicle.class
=> Vehicle(id:integer, name: string, … , updated_at: datetime)
>> Vehicle
=> Vehicle(id:integer, name: string, … , updated_at: date time)
>> vehicle.class == Vehicle
=> true
>> vehicle.class === Vehicle
=> false
或者这与它有关RACK_ENV
吗?