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