Answers:
这是一种代码样式约定;它表示一个方法返回一个布尔值。
问号是方法名称末尾的有效字符。
?
,Ruby 中还有其他的用途(是三元运算符,将字符转换为ASCII整数test
,在RegEx中使用in ,等等),其中许多在其他答案中都有介绍。
isEmpty()
,isDigit()
等在Ruby中,同样的方法将被写入empty?
,而digit?
这是相当多的更好IMO。
is
一直都在使用。对于来自Swift的人来说,这可能会非常令人困惑,因为那里的问号用于nullable
:)
还要注意?
连同一个字符,将返回ASCII字符代码A
例如:
?F # => will return 70
或者在ruby 1.8中,您可以执行以下操作:
"F"[0]
或在ruby 1.9中:
"F".ord
还要注意,?F
它将返回字符串"F"
,因此,为了使代码更短,您还可以?F.ord
在Ruby 1.9中使用以获得与相同的结果"F".ord
。
'F'
可能值得指出?
的是,仅在方法名称中允许使用s,在变量中不允许使用s。在学习Ruby的过程中,我假设?
指定了一个布尔返回类型,所以我尝试将它们添加到标记变量中,从而导致错误。这导致我错误地相信了一段时间,其中涉及一些特殊的语法?
s的。
与来自Kernel#test的测试方法的第一个参数一起使用也是一种通用约定
irb(main):001:0> test ?d, "/dev" # directory exists?
=> true
irb(main):002:0> test ?-, "/etc/hosts", "/etc/hosts" # are the files identical
=> true
如这里的问题所示
test
,?d
是的快捷方式"d"
。test
将一个字符的字符串作为第一个参数,因此可以使用test ?d, "/dev"
或调用它test "d", "/dev"
。