为什么Ruby没有is_an?
方法?例如:
[].is_an? Array?
答案 0 :(得分:6)
您可以考虑使用is_a?
,例如:。
if [].is_a? Array
puts "Array"
end
如果你真的需要is_an?
,你也可以用别名来实现它:
class Object
alias :is_an? :is_a?
end
if [].is_an? Array
puts "Array"
end
答案 1 :(得分:5)
答案 2 :(得分:2)
Ruby已经is_a?
已经做了你想做的事。如果你愿意,可以在3行代码中创建is_an?
,但我认为这是一个坏主意。标准Ruby库中已经有太多的同义词使得它比学习所需的更难。我刚刚了解到Enumerable的地图和收集是一样的。
答案 3 :(得分:1)
Rails维护者Andrew White gave的原因如下:
这纯粹是英语的特质,因为很多(大多数?) Ruby程序员没有以英语为主要语言, 可能不知道,导致混乱。
有关此主题的完整讨论,请参见此请求请求: Improved readability for object introspection (is_a?)
如果有人在Ruby存储库中打开相同的拉取请求,可能会添加它!
答案 4 :(得分:0)
答案 5 :(得分:0)
is_an?
别名初始化程序。我们最终创建了一个小的初始值设定项,以将该别名添加到我们的项目中,因为我们主要讲英语,并且更喜欢is_an的语法正确性?提供:
config/initializers/is_an.rb
# Aliases `is_an?` to `is_a?` so we correctly use `is_an?( Array )` instead of `is_a?( Array )`
#
# Surprisingly, not in the Ruby core, but it almost made it into the Rails core.
# For the discussion, see https://github.com/rails/rails/pull/6243
#
class Object
alias is_an? is_a?
end