什么是假的=== options [:url]意味着在相等的情况下

时间:2015-10-01 09:02:34

标签: ruby

虽然这是一个案例平等陈述,但我无法弄清楚它在以下示例代码中的含义:

def initialize connection, options = {}
  @proxy = @uri = nil
  @connection = connection
  unless false === options[:url]
    url = options[:url] ? options[:url].dup : 'http://127.0.0.1:8983/solr/'
    url << "/" unless url[-1] == ?/
    @uri = RSolr::Uri.create url
    if options[:proxy]
      proxy_url = options[:proxy].dup
      proxy_url << "/" unless proxy_url.nil? or proxy_url[-1] == ?/
      @proxy = RSolr::Uri.create proxy_url if proxy_url
    end
  end
  @options = options
end

2 个答案:

答案 0 :(得分:1)

我认为这里使用===运算符是错误的。这里更惯用的是

if options[:url] != false
  # code
end

因为false === options[:url]只适用于options[:url] == false

答案 1 :(得分:1)

我相信#===意味着#==的含义(在falsetrue的情况下,通常不是这样),所以这只是编写得不好的代码。

false === false # => true
false === nil   # => false
false === true  # => false