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