可能重复:
什么!! 红宝石意味着什么?
嗨,
我是Ruby的新手,无法找到什么"!!"的描述 手段.
这是一个例子:
def signed_in?
!!current_user
end
Run Code Online (Sandbox Code Playgroud)
如果这是双重否定,为什么不说:
def signed_in?
current_user
end
Run Code Online (Sandbox Code Playgroud)
请帮忙.
[这个问题有关,但并不等同于这一个 ]
如果我尝试使用某些类型的值作为布尔表达式,我会收到警告.我有时使用三元运算符(?:)转换为bool 而不是抑制警告.使用两个not运算符(!!)似乎做同样的事情.
这就是我的意思:
typedef long T; // similar warning with void * or double
T t = 0;
bool b = t; // performance warning: forcing 'long' value to 'bool'
b = t ? true : false; // ok
b = !!t; // any different?
Run Code Online (Sandbox Code Playgroud)
那么,双重技术真的做同样的事吗?它比三元技术更安全吗?这是技术与非整数类型(例如,具有同样安全void *或double对T)?
我不是在问好!!t风格.我在问它是否在语义上不同于t ? true : false.
我有一个Event带有日期时间列的ActiveRecord模型starts_at.我想提交一份表格,其中日期和时间starts_at分别选择(例如"23-10-2010"日期和"18:00"时间).这些字段应该由单列支持starts_at,并且验证也应该优选地反对starts_at.
我当然可以使用虚拟属性和钩子,但我想要一个更优雅的解决方案.我已经尝试了composed_of(rdoc)和属性装饰器(灯塔讨论,github)但没有成功.
以下是我想要的概述.
class Event < ActiveRecord::Base
validates_presence_of :start_date
end
# View
# On submission this should set start_date.
form_for @event do |f|
f.text_field :starts_at_date # date-part of start_date
f.text_field :starts_at_time_of_day # time-of-day-part of start_date
f.submit
end
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
Ruby是否具有普通英语关键字,或者像"and"和"or"一样?如果不是,这是因为排他性还是不允许评估短期?
def test
!!session[:test]
end
Run Code Online (Sandbox Code Playgroud)
! - 这是做什么的?我们可以删除它,仍然认为它将工作相同吗?
什么!! 这个Ruby函数意味着什么?
def is_i?
!!(self =~ /^[-+]?[0-9]+$/)
end
Run Code Online (Sandbox Code Playgroud) 这样的代码有什么样的快捷方式吗?
def test
obj = get_from_somewhere()
if obj
true
else
false
end
end
Run Code Online (Sandbox Code Playgroud)
在Python中,我可以这样做:
return True if obj else False
Run Code Online (Sandbox Code Playgroud) ActiveSupport Object使用实例方法扩展blank?:
class Object
def blank?
respond_to?(:empty?) ? !!empty? : !self
end
end
Run Code Online (Sandbox Code Playgroud)
可以!!empty?写成empty?呢?这是一个风格选择,以便它作为返回布尔值的方法轻松读取?或者还有其他什么?
可能重复:
什么!! 红宝石意味着什么?
这个功能在做什么?
def current_product?
!!current_product
end
Run Code Online (Sandbox Code Playgroud)
这不是双重否定吗?
ruby ×8
boolean ×3
activerecord ×1
c++ ×1
datetime ×1
forms ×1
if-statement ×1
negation ×1
operators ×1
visual-c++ ×1
xor ×1