Ruby中两个!的妙用

  今天在Rails中看到一行代码:

@connection.reconnect = !!@config[:reconnect] if @connection.respond_to?(:reconnect=)

  其中的!!有点让人费解,以为这是啥新的语法,打开IRB测试了一下,!!true和!!false这种情况下,加上!!似乎有点多余,但是在!!nil时就不同了,返回的结果为false。

  在yml配置文件中,如果没有配置某个属性,那么config[:property]的值就为nil,如果将这个空值当做fasle赋值给其他变量,则有可能出现莫名其妙的问题,这时候加上!!后,nil就变为了false,避免了可能出现的潜在问题。

你可能感兴趣的:(Ruby,Rails)