Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在大小写相等的情况下,false===options[:url]意味着什么_Ruby - Fatal编程技术网

Ruby 在大小写相等的情况下,false===options[:url]意味着什么

Ruby 在大小写相等的情况下,false===options[:url]意味着什么,ruby,Ruby,虽然这是一个case equality语句,但我无法理解它在以下示例代码中的确切含义: 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

虽然这是一个case equality语句,但我无法理解它在以下示例代码中的确切含义:

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
def初始化连接,选项={}
@proxy=@uri=nil
@连接=连接
除非false==选项[:url]
url=选项[:url]?选项[:url].dup:'http://127.0.0.1:8983/solr/'

url我认为这里使用
==
操作符是错误的。这里更惯用的是使用

if options[:url] != false
  # code
end
因为
false===options[:url]
只有在
options[:url]==false
的情况下才会起作用,我相信
的意思正是
的意思(在
false
true
的情况下,通常不是这样),所以这就是写得不好的代码

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

最后一句话听起来让我很困惑
false==
是对
FalseClass
实例调用
#===
方法。它将调用传递给超类',这只是将
false
与RHO进行比较“有效地与
#=
”的方式相同@mudasobwa是的,我的意思是
false==smth
等于
false==smth