Fel*_*lix 6 ruby newline operators
为什么以下表达式会解决它们的问题?括号应该比新行具有更高的优先级,不是吗?
3 - ( 1 + 1 )
# => 1
3 - ( 1
+ 1 )
# => 2
Run Code Online (Sandbox Code Playgroud)
省略加号还可以使表达式求值为2:
3 - ( 1
1 )
# => 2
Run Code Online (Sandbox Code Playgroud)
如果我声明为连续换行符(转义)或将加号移到第一行,则会实现所需的行为:
3 - ( 1 \
+ 1 )
# => 1
3 - ( 1 +
1 )
# => 1
Run Code Online (Sandbox Code Playgroud)
这是因为Ruby将新行识别为表达式的结尾,除非表达式不完整.例如,
(1
+ 1)
Run Code Online (Sandbox Code Playgroud)
是相同的
(1;
+1)
Run Code Online (Sandbox Code Playgroud)
这与+1返回括号内的最后一个表达式相同.而这又是一样的1.
当你+在一行的末尾时,表达式是不完整的,因此继续到下一行.这使得:
3 - ( 1 +
1 )
Run Code Online (Sandbox Code Playgroud)
被解释为3 - (1 + 1).
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |