我试图要求文件夹中的所有文件。我有以下内容。
Dir.foreach File.expand_path("app/models") do |file|
require file unless file === /^\./
end
然而,它失败了。当我打开一个ruby控制台时,我尝试以下操作:
"." === /^\./
并且评估为false。为什么它不匹配?
答案 0 :(得分:1)
===
运算符实际上是左侧对象的一种方法。
在这种情况下,===
上的操作数顺序很重要,因为如果字符串文字"."
排在第一位,则会计算String equality operator (method) String#===
。如果正则表达式文字位于左侧,则使用the Regexp operator Regexp#===
:
扭转你的操作数。
# The string "." isn't equal to the Regexp object
>> "." === /^\./
=> false
# With the regexp as the left operand:
>> /^\./ === "."
=> true
# With the string on the left, you may use =~ and test for nil as a non-match
>> "." =~ /^\./
=> 0