Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Ruby
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2018, 16:43   #1
SKyzZz
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 43
Сообщение Обработка аргументов

Добрый день!

Реализовать метод с двумя обязательными аргументами, а всеми остальными -
не обязательными. Если за методом следует блок, то вызвать его на каждом из не обязательных аргументов, если же блок не следует вернуть строку `"ERROR"`.

Пример:


Код:
def method(a, b, *args, &block)
  array = a,b
  if block_given?
    args.each {|v| p block.call(v)}
  elsif
    puts "ERROR"
  end
end

#puts method(1, 2, 3, 4, 5, a: 6, b: 7){|v| v}

#puts method(1,2)
method(1, 2, 3) { |i| puts i }
Что не так объясните плиз. Спасибо.

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось SKyzZz; 27.04.2018 в 17:00.
SKyzZz вне форума Ответить с цитированием
Старый 27.04.2018, 16:46   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А что-то не так?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.04.2018, 16:53   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
|v| p block.call(v)
Зачем тут p?

Код:
elsif
Где условие и зачем оно? Может просто else, не?
p51x на форуме Ответить с цитированием
Старый 27.04.2018, 16:55   #4
SKyzZz
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А что-то не так?
Мой вывод:
3
nil

Все хорошо, но мне требуется вывод:
1
2
3
nil

т.е. если я положу в некий массив все три аругумента, он не сможет парсить args... так вот как сделать так, чтобы он парсил мне все аргументы...?
SKyzZz вне форума Ответить с цитированием
Старый 27.04.2018, 16:57   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Прочтите мой пост,а.
p51x на форуме Ответить с цитированием
Старый 27.04.2018, 17:01   #6
SKyzZz
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 43
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
|v| p block.call(v)
Зачем тут p?

yield(v) <=> block.call(v)
вывод цифр...

Код:
elsif
Где условие и зачем оно? Может просто else, не?
пофиксил, сорян
SKyzZz вне форума Ответить с цитированием
Старый 27.04.2018, 17:08   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от SKyzZz Посмотреть сообщение
yield(v) <=> block.call(v)
вывод цифр...
Это к чему? У вас там v. А нил и вылазит из-за p.
p51x на форуме Ответить с цитированием
Старый 27.04.2018, 17:13   #8
SKyzZz
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 43
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Это к чему? У вас там v. А нил и вылазит из-за p.

Код:
def m(a, b, *args, &block)
  array = a,b
  if block_given?
    args.each {|v| p yield(v)} # выводит 3
  else
    puts "ERROR"
  end
end
Пожалуйста, оформляйте Ваш код согласно правилам.

m(1, 2, 3) { |i| puts i } # выведет nil

Последний раз редактировалось Вадим Мошев; 15.06.2018 в 01:53.
SKyzZz вне форума Ответить с цитированием
Старый 27.04.2018, 17:17   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Пл... В который раз говорю - УБЕРИТЕ ИЗ each p

И для yield &block не нужен.
p51x на форуме Ответить с цитированием
Старый 27.04.2018, 17:51   #10
SKyzZz
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 43
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Пл... В который раз говорю - УБЕРИТЕ ИЗ each p

И для yield &block не нужен.
убрано, задачу это не решает..
SKyzZz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача аргументов в main (C). Cordis Общие вопросы C/C++ 2 25.04.2018 09:58
Функция не принимает 0 аргументов RendomID Помощь студентам 2 26.03.2015 08:59
Передача нескольких аргументов Pan_Ataman Общие вопросы C/C++ 2 13.02.2014 04:47
Массовая замена аргументов kzld Microsoft Office Excel 8 07.02.2010 17:57