Ruby方法调用带符号参数,没有空格

时间:2014-01-31 21:56:22

标签: ruby

我在Rails应用程序中看到了一些我正在审查的内容,我预计会出现错误,但它正在运行。我对使用此参数调用此方法的方式感到困惑。没有空格,只有两个单词用冒号分隔:

    ree-1.8.7-2012.02 :001 > def muffin(x)
    ree-1.8.7-2012.02 :002?>   puts x.inspect
    ree-1.8.7-2012.02 :003?>   end
    => nil
    ree-1.8.7-2012.02 :004 > muffin:tuffin
    :tuffin

也适用于字符串:

    ree-1.8.7-2012.02 :004 > muffin'd'
    "d"

这是预期和正确的事情吗?

2 个答案:

答案 0 :(得分:4)

Ruby拥有业界最轻松的语法之一。是的,空间是可选的。如果您希望您的同事看到正在发生的事情,请尝试muffin(:tuffin)

更进一步,你可以写:

def muffin x

另一个“因为我能”的例子并不是做某事的正当理由。 Ç - ;

答案 1 :(得分:3)

在ruby中,可以在没有括号的情况下调用方法:

puts 'string' #returns string
puts'string'  #returns string

如果是字符串和符号,则空格是可选的。

puts10 #NameError: undefined local variable or method `puts10' for main:Object
puts 10 #returns 10

另请注意使用空间引入的差异:

[1,2,3,4].count + 1 #returns 5
[1,2,3,4].count +1  #returns 1 (calls method [1,2,3,4].count with +1 as an argument)