有时我看到Ruby中的方法有"?" 和"!" 在他们的最后,例如:
name = "sample_string"
name.reverse
name.reverse!
name.is_binary_data?
Run Code Online (Sandbox Code Playgroud)
我想知道他们的目的是什么?它们只是语法糖衣吗?
方法名称可以以问号结尾 ?
def has_completed?
return count > 10
end
Run Code Online (Sandbox Code Playgroud)
但变量名不能.
这是什么原因?变量名也以同样的方式结束不方便吗?鉴于我们通常无法foobar通过查看名称来判断方法还是变量foobar,为什么例外?情况呢?
我应该如何处理这个?也许总是使用has或is在代码中?
if process_has_completed
...
end
if user_is_using_console
...
end
Run Code Online (Sandbox Code Playgroud) 我在HAML代码中看到了这个运算符.我想知道它是为了什么.
我看到以下作品:
> ?{
=> "{"
> ?\s
=> " "
> ?a
=> "a"
Run Code Online (Sandbox Code Playgroud)
这不起作用:
> ?ab
SyntaxError: (irb):4: syntax error, unexpected '?'
Run Code Online (Sandbox Code Playgroud)
所以我认为它需要一个字符作为参数并返回一个带有该字符的字符串.
问题:
Chris Pine的" 如何编程"提到以下内容:
?T
Run Code Online (Sandbox Code Playgroud)
应该回来84.当我运行它时,它返回"T".我怀疑存在版本差异.我猜这?是一个Array或String方法,但我找不到文档.怎么?T办?
下面的行检查和执行什么?
prefix = root_dir.nil? ? nil : File.join(root_dir, '/')
Run Code Online (Sandbox Code Playgroud)
这是包含代码行的块.
def some_name(root_dir = nil, environment = 'stage', branch)
prefix = root_dir.nil? ? nil : File.join(root_dir, '/')
.
.
.
Run Code Online (Sandbox Code Playgroud)
我知道'?' 在红宝石中是检查是/否履行的东西.但我对上面的代码块中的用法/语法不是很清楚.
你如何定义验证方法?例子:包括?甚至?奇?
>> 2.odd?
=> false
>> 6.even?
=> true
>>
Run Code Online (Sandbox Code Playgroud) 我跑过这段代码,想知道是什么?意味着在这种情况下?它是if语句条件的一部分
if user_input.include? "s"
Run Code Online (Sandbox Code Playgroud)
什么是"?" 意思?
对不起,我是红宝石的新手