2013-08-28 7 views
-3
def add(a, b) 
    puts "ADDING #{a} + #{b}" 
    a + b 
end 

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

Вот мой код, и мой вопрос, зачем мне лишние (а + Ь) и (а - Ь) в конце ? Я понимаю, что «def» настраивает функцию, а «puts» ADDING # {a} + # {b} "'помещает этот код на экран, чтобы я мог его видеть. Почему система не может видеть, как код помещается в «puts».Ruby: Зачем мне нужен дополнительный «а + Ь»

Прошу прощения, если это немного запутанно, но я новичок в рубине. Также, когда я редактирую a + 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)', а скорее консольный журнал («Добавление» + a + «+» + b) ' –

2

Он интерпретирует "ADDING #{a} + #{b}" в виде строки, как это должно быть. Это строка. Он не анализирует ваши строки и не понимает, что вы имеете в виду. Затем он печатает его на выходе с помощью puts. puts - выражение, которое возвращает nil, а не значение a + b (спасибо Jörg W 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

изменен, не работал с рубином – clcto

Смежные вопросы