2013-08-28 90 views
-3
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”正在设置该功能,“puts”ADDING#{a} +#{b}“'将该代码放在屏幕上供我查看。系统为什么不能看到代码放在“puts”中的方式。红宝石:为什么我需要一个额外的“A + B”

对不起,如果这有点令人困惑,但我是新来的红宝石。另外当我编辑a + b它不会允许我这样做。有没有办法编辑它,以便它读取一行上的数字,然后另一行上的数字。或许,这样的A + B出来的... ... + B(想象的。“”是空的空间。

+0

之间的差异为什么投下来这个人吗?我只是问一个问题,我是编程新手。似乎不成熟。 – mongobongo

回答

2

你需要它到底是因为‘放’发该字符串到控制台,而最后的a + b是def的返回值。

这将是在JavaScript这样做相当于:

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

不是'console.log(a + b)',而是'console log(“Adding”+ a +“+”+ b)' –

2

据解释"ADDING #{a} + #{b}"为字符串,因为它应该。它是一个字符串。它不会解析你的字符串,并假设你的意思。然后使用puts将其打印到输出。 puts是一个表达式,返回nil,而不是a + b的值(谢谢JörgW Mittag)。 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; 
} 
+0

Ruby中的所有内容都是表达式。 'puts'就像其他任何方法调用一样只是方法调用,就像任何其他方法调用一样,它将返回方法的返回值。在'puts'的情况下,返回值是'nil'。 –

+0

editted,没有与红宝石工作 – clcto