2014-11-08 3 views
0

Могу ли я получить доступ к методу внутри другого методаМогу ли я получить доступ к методу внутри другого метода?

def one(a) 
    if a < 10 
     two() 
    else 
     print "ITs passed in first function ONE" 
    end 
end 

def two(b) 
    if b < 10 
     print "Both function failed" 
    else 
     print "ITs passed in second function TWO" 
    end 
end 

puts one(5) 
puts two(15) 

Если я запускаю эту программу я получаю ошибку

test4.rb:9:in `two': wrong number of arguments (0 for 1) (ArgumentError) 
+0

Внимательно прочитайте сообщение об ошибке. –

+0

at 'two()' - 'two' хочет один аргумент – August

+0

Да, я не понимаю, что вы могли бы рассказать? – user2996524

ответ

0

Ошибка вы получили это не потому, что вы не можете использовать другой метод. Это потому, что аргумент, который вы передали, не соответствует аргументу, который ожидает этот метод.

В частности, метод two ожидает один аргумент, в то время как вы передаете его с two().

Изменить это:

def one(a) 
    if a < 10 
     two(a) #<--here 
    else 
#... 
+0

Это правильно, но я не хочу использовать два (a) там, где я хочу взять две() в следующую функцию с некоторым другим аргументом. Я попробовал два (b), но он бросает test4.rb: 5: in 'one ': неопределенная локальная переменная или метод 'b 'для main: Object (NameError) – user2996524

+0

Я хочу, чтобы это помещало два (15) в два() – user2996524

+0

Просто помните, что' two' ожидает один аргумент, передает все, что вам нужно. –

-1

Вам не нужно вызывать оба метода в коде драйвера. Используйте переменную экземпляра для b и просто вызовите одну функцию. Если вы предпочитаете изменять «печать» для «возврата» внутри методов.

+0

Это не попытка ответить на вопрос. Вместо этого используйте систему комментариев, чтобы сделать однострочные предложения. Добро пожаловать в Stackoverflow. –

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