我掌握了Python的基本知识,并且我正在努力学习Ruby。我看到以下方法似乎是一个哈希表。我不明白双管道正在做什么,如果有人能告诉我为什么使用它和Python等效,我会很感激。
def request_raw(opts={})
c_enc = opts['encode'] || false
c_uri = opts['uri'] || '/'
c_body = opts['data'] || ''
c_meth = opts['method'] || 'GET'
c_prot = opts['proto'] || 'HTTP'
对于其他上下文,可以按如下方式调用该方法:
send request_raw({'uri' => '/', 'method' => 'GET'})
答案 0 :(得分:2)
c_enc = opts['encode'] || false
在此行中,如果opts [' encode']不是nil,则c_enc的值将设置为opts [' encode']否则它将为false
案例2
如果选项['编码']为false,则||
右侧的false将分配给c_enc。
其他例子
1 || false => 1
false || 1 => 1
false || false => false
true || false => true
"foo" || false => "foo" #because string foo is not false or nil
"foo1" || "foo2" => "foo1" #because foo1 is not false or nil, it short circuits and will not bother to evaluate the right hand side of ||
基本上在您的示例中,opts [' encode']不应为false或nil。如果它不是false或nil,opts [' encode']内的任何内容都将被分配给c_enc
现在根据你的问题
您在方法调用中传递哈希,opts是接收参数。现在来到第一行
c_enc = opts['encode'] || false
,现在opts['encode'] = nil
, opts是哈希。您通过哈希[' key'] 查找哈希条目,因此c_env = false