为什么 Ruby 没有一个名为
is_an?
的方法?例如:[].is_an? Array?
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
请参阅此pull request以获取完整的讨论内容。这是一种纯粹的英语特异性,由于许多(大多数?)Ruby程序员并非以英语为母语,他们可能不知道这一点,从而导致混淆。
Ruby已经有is_a?
方法可以满足你的需求。如果你想要,你可以用三行代码编写is_an?
方法,但我认为这是一个坏主意。标准Ruby库中已经有太多的同义词了,这使得学习变得比必要的更加困难。我最近才学会Enumerable的map和collect是相同的。
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
an
的地方你打成了a
,但现在你正在寻找an
而不是已经存在的a
。 - sawa