Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
Ruby 无法将刚分配的变量放在同一行上_Ruby - Fatal编程技术网

Ruby 无法将刚分配的变量放在同一行上

Ruby 无法将刚分配的变量放在同一行上,ruby,Ruby,我不能把变量放在同一行上,但可以放在不同的行上 我的意见 我的输出 bundle exec ruby main.rb main.rb:21: syntax error, unexpected tIDENTIFIER, expecting end-of-input word = 'e2ed2d' puts word ^~~~ exit status 1 使用: word = 'e2ed2d'; puts word 在Ruby中,括

我不能把变量放在同一行上,但可以放在不同的行上 我的意见

我的输出

bundle exec ruby main.rb
    main.rb:21: syntax error, unexpected tIDENTIFIER, expecting end-of-input
    word = 'e2ed2d' puts word
                    ^~~~
    exit status 1
使用

word = 'e2ed2d'; puts word

在Ruby中,括号在消息发送的参数列表中是可选的,接收者也是可选的(默认隐式设置为
self
)。所以,

foobarbaz
相当于

foo(bar(baz))
这相当于

self.foo(self.bar(self.baz))
#或者,这取决于“baz”是局部变量还是消息
self.foo(self.bar(baz))
更一般地说,每当您看到两个标记彼此相邻时,唯一有效的解释是第一个标记是消息,第二个标记是参数。(唯一的例外是操作员消息,例如
a+b

但是,没有任何有意义的方式将代码解释为消息发送:

word='e2ed2d'放入word
这相当于什么

word=self.e2ed2d'(self.puts(word))

word='e2ed2d'(put(word))
这毫无意义:
String
文本不接受任何参数(只有消息发送和块调用才接受),并且
String
文本也不是有效的消息标识符

实际上需要的是两个单独的表达式,因此需要使用表达式分隔符分隔这两个单独的表达式。Ruby有两个通用的表达式分隔符:可以使用分号
或换行符,因此

word='e2ed2d'
说

word='e2ed2d';说
没关系

在某些特定上下文中,还存在特定于上下文的其他表达式分隔符。例如,在条件表达式中,可以使用关键字
然后
作为附加的上下文特定分隔符,将条件与结果分开:

如果2<3,则“2小于3”,否则“2大于或等于3”
如果2<3;'2小于3',否则2大于或等于3',结束
如果2<3
“2小于3”否则“2大于或等于3”结束

使用
puts word='e2ed2d'
–首先计算赋值并返回赋值,然后打印。注意:如果使用gems,您只需要
bundle exec
,即使如此,也可能不必这样做。对于普通的程序,
ruby main.rb
就足够了。
word = 'e2ed2d'; puts word