Ruby:为什么我需要一个额外的“a + b”

时间:2013-08-28 21:42:54

标签: ruby syntax spacing function

def add(a, b)
    puts "ADDING #{a} + #{b}"
    a + b
end

def subtract(a, b)
    puts "SUBTRACTING #{a} - #{b}"
    a - b

这是我的代码,我的问题是,为什么我最后需要额外的( a + b)和(a-b)?我知道“def”正在设置功能,而“put”ADDING#{a} +#{b}“'正在将代码放到屏幕上供我查看。为什么系统不能只看到代码放在“puts”中的方式。

如果这有点令人困惑,我很抱歉,但我是红宝石的新手。另外,当我编辑 a + b 时,它不允许我这样做。有没有办法我可以编辑它,以便它读取一行上的数字,然后另一行读取另一行。或者也许这样 a + b 出现为...... + ... b(想象“。”是空格。

2 个答案:

答案 0 :(得分:2)

你最后需要它,因为“puts”将该字符串发送到控制台,而末尾的a + b是def的返回值。

这相当于在javascript中执行此操作:

function myFunc(a,b) {
 console.log("adding" + a + " + " + b);
 return a+b;
}

答案 1 :(得分:2)

它正在将"ADDING #{a} + #{b}"解释为字符串,因为它应该如此。这是一个字符串。它不解析你的字符串并假设你的意思。然后使用puts将其打印到输出。 puts是一个返回nil的表达式,而不是a + b的值(感谢JörgWMittag)。 a+b是一个表达式,其值为a加上b的值,因此您的函数也具有该值。

在C中它是

之间的区别
void add( int a, int b )
{
    printf( "ADDING %d + %d\n", a, b );
}

int add( int a, int b )
{
    printf( "ADDING %d + %d\n", a, b );
    return a + b;
}