! (双重爆炸)意思是Ruby

时间:2016-04-05 06:44:09

标签: ruby

!!在以下方法中的含义是什么?

def include?(record)
  !!@association.include?(record)
end

3 个答案:

答案 0 :(得分:6)

它将变量转换为类型boolean并确定其真值或假值

例如: -

# Numbers...
!!1 # => true
!!0 # => true

# Numbers as strings...
!!'1' # => true
!!'0' # => false

# Truthy strings (case insensitive)...
!!'true'  # => true  (alias: 't')
!!'false' # => false (alias: 'f')
!!'yes'   # => false (alias: 'y')
!!'no'    # => false (alias: 'n')

# Booleans...
!!true  # => true
!!false # => false

# Nil...
!!nil # => false

答案 1 :(得分:3)

它可以帮助您获得布尔结果。

例如:

a = nil
!a
#=> true
!!a
#=> false

类似地

a = 1
!a
#=> false
!!a
#=> true

答案 2 :(得分:0)

双重感叹号会将结果转换为布尔值,在这种情况下,如果public void onBindViewHolder(ViewHolder holder, final int position) { holder.checkBox.setEnabled(data.get(position).isEnabled()); } 返回@assication.include?(record),则会转换为nil