Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
->;(右箭头)和<;-(左箭头)在for循环上_R_Language Design - Fatal编程技术网

->;(右箭头)和<;-(左箭头)在for循环上

->;(右箭头)和<;-(左箭头)在for循环上,r,language-design,R,Language Design,,for循环的返回NULL(如文档所示): 未对->进行注释,->似乎已转换为x) #expression(x)的行为与不同,我认为这更像是一个解析问题 for(i in 1:3) {i+1} -> x 实际上被解析为 for(i in 1:3) { x <- {i+1} } 因此,分配是循环体的一部分。例如,您也可以无错误地运行它 for(i in 1:3) {i+1} ^2 或者看看你从这个表达式中得到了什么 for(i in 1:3) {i+1} + {print(

,for循环的
返回
NULL
(如文档所示):

未对
->
进行注释,
->
似乎已转换为
x)

#expression(x)的行为与
不同,我认为这更像是一个解析问题

for(i in 1:3) {i+1} -> x
实际上被解析为

for(i in 1:3) {
   x <- {i+1}
}
因此,分配是循环体的一部分。例如,您也可以无错误地运行它

for(i in 1:3) {i+1} ^2
或者看看你从这个表达式中得到了什么

for(i in 1:3) {i+1} + {print(i)}
# [1] 1
# [1] 2
# [1] 3
循环体表达式不终止于第一个大括号的末尾。它终止于行的末尾(或者可以使用
或通过将其嵌套在代码块中来结束)。这在任何方面都不是赋值运算符所独有的

所以这不是一个bug,只是语法有点混乱。你所期望的看起来更像

{for(i in 1:3) {i+1}} -> x
它仍然返回NULL

lobstr::ast(for(i in 1:3) {i+1} -> x)
o-`for` 
+-i 
+-o-`:` 
| +-1 
| \-3 
\-o-`<-` 
  +-x 
  \-o-`{` 
    \-o-`+` 
      +-i 
      \-1 
for(i in 1:3) {i+1} ^2
for(i in 1:3) {i+1} + {print(i)}
# [1] 1
# [1] 2
# [1] 3
{for(i in 1:3) {i+1}} -> x