创建变量时使用Ruby的`或`关键字

fil*_*nut 1 ruby

我最近遇到了以下Ruby代码,这让我很困惑:

def initialize(kind, street_1, street_2, city, state, postal_code)
  @kind = kind or ''
  @street_1 = street_1 or ''
  @street_2 = street_2 or ''
  @city = city or ''
  @state = state or ''
  @postal_code = postal_code or ''
end
Run Code Online (Sandbox Code Playgroud)

我不明白or这段代码中扮演的角色是什么.有人可以解释一下吗?

Cal*_*Bit 5

编辑:应该注意的是,or关键字在这种情况下不起作用,但意图是正确的 - 使用||而不是or在此示例中将产生所需的输出.

or此代码关键字意味着,如果该参数被分配给局部变量(即kind@kind分别地)被nil,则局部变量的值应被初始化为''

另一种看待这种情况的方法 - 如果我打电话Class.new("something", "1800 Wallaby Way", nil, nil, nil, nil),那么这个类将被初始化为:

@kind = "something"
@street_1 = "1800 Wallaby Way"
@street_2 = ''
@city = '
@state = ''
@postal_code = ''
Run Code Online (Sandbox Code Playgroud)