2013-08-28 93 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