为什么 Ruby 有时会在调用带有括号前的 space 的函数时抛出错误?
Why does Ruby sometimes throw an error when a function is called with a space before the parentheses?
我学到的方法 Ruby 是,带括号和不带括号的函数语法都是可以接受的。为什么有些 Ruby 口译员特别想要一个而不是另一个?
def foo(i)
puts "=" * i.length
puts i
puts "=" * i.length
end
foo "hello"
=begin
=====
hello
=====
=end
foo ("hello")
# sometimes ERROR
使用 Ruby 2.6.3 当 运行 和 ruby -w
时,我收到以下警告。
test.rb:1: warning: parentheses after method name is interpreted as an argument list, not a decomposed argument
这是指 Array Decomposition,您可以在其中将数组参数的元素解压缩到各个变量中。
def bar((a,b))
puts "a: #{a}, b: #{b}"
end
# a: first, b: second
bar ['first', 'second', 'third']
def foo (i)
怎么了? def foo i
是合法的; parenthesis around the arguments are optional。但是 def foo (i)
是模棱两可的。可以解释为单个参数def foo(i)
或数组分解def foo((i))
.
我学到的方法 Ruby 是,带括号和不带括号的函数语法都是可以接受的。为什么有些 Ruby 口译员特别想要一个而不是另一个?
def foo(i)
puts "=" * i.length
puts i
puts "=" * i.length
end
foo "hello"
=begin
=====
hello
=====
=end
foo ("hello")
# sometimes ERROR
使用 Ruby 2.6.3 当 运行 和 ruby -w
时,我收到以下警告。
test.rb:1: warning: parentheses after method name is interpreted as an argument list, not a decomposed argument
这是指 Array Decomposition,您可以在其中将数组参数的元素解压缩到各个变量中。
def bar((a,b))
puts "a: #{a}, b: #{b}"
end
# a: first, b: second
bar ['first', 'second', 'third']
def foo (i)
怎么了? def foo i
是合法的; parenthesis around the arguments are optional。但是 def foo (i)
是模棱两可的。可以解释为单个参数def foo(i)
或数组分解def foo((i))
.