С Новым годом! Форум программистов, компьютерный форум, киберфорум
Ruby
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8

Подскажите новичку по return

14.11.2014, 23:49. Показов 2121. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форма передает fname, пишу метод:
Ruby
1
2
3
  def fio=(fname)
      puts fname
  end
все прекрасно передается, в консоле вижу содержимое fname, далее:
Ruby
1
2
3
  def fio=(fname)
      return fname
  end
получаю пустую строку при вызове метода, например puts fio.

Выпрямите мне руки плиз……
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2014, 23:49
Ответы с готовыми решениями:

подскажите новичку
недавно организовали во Владимире юридический портал Подскажите пожалуйста с чего начать продвижение? Бюджет пока не очень большой, кто...

подскажите новичку
Доброго времени суток! Начинаю изучать Java. Хотелось бы получить совет - из какой литературы получить основы, ну и не только? ...

подскажите новичку
не делается прозрачным элемент меню подскажите где ошибка $(document).ready(function() { $('div').hide(); /*должен давать...

18
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,764
15.11.2014, 10:05
return, кстати, не обязателен в данном случае. можно просто
Ruby
1
2
3
def fio=(fname)
  fname
end
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
15.11.2014, 10:50
тема слегка не про Rails, а больше к Ruby основам причем.

Цитата Сообщение от lemial Посмотреть сообщение
def fio=(fname)
* * * return fname
* end
вы здесь описали setter, типа fio="MpaKus"

уберите = если нужна обычная функция и как заметили выше в Ruby иногда можно упускать return тогда явно возвращается результат последней строки в функции или методе.

пример:

Ruby
1
2
3
4
5
def fio(name, family)
  "Hello, #{name} #{family}"
end
 
puts fio("Al", "Capone")
0
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8
16.11.2014, 02:15  [ТС]
Не возвращает ничего сеттер, если делаю так:

Ruby
1
2
3
def fio=(fname)
  fname
end
f.fname = 'test'
puts f.name

Результат есть, если не передаю 'test' - результата нет, логично, НО! почему если я делаю:

Ruby
1
2
3
def fio=(fname)
  puts fname
end
Результат есть и нужный мне, кстати, fname у меня приходит из формы.

Добавлено через 2 часа 9 минут
Кстати, что хочу, может так будет проще, взял на переделку под себя этот продукт:

https://github.com/ivaldi/brimir

Вот тут как раз есть этот метод:

https://github.com/ivaldi/brim... om_user.rb

Хочу добавить кроме email еще и ФИО пациента который создает запрос, в таблицу users соответствующие изменения уже внес, там проблем нет, осталось решить только вопрос о добавлении ФИО при создании заявки.
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
16.11.2014, 10:19
учите язык, так например self может помочь достучаться до методов инстанса.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.11.2014, 12:52
Ещё один Rails-программист, не знающий Ruby?
0
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8
16.11.2014, 13:07  [ТС]
Я не называю себя программистом, а учить язык по готовому продукту мне проще, это мое личное мнение.
Ну так подскажет кто по этому сеттеру?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.11.2014, 13:15
Цитата Сообщение от lemial Посмотреть сообщение
а учить язык по готовому продукту мне проще, это мое личное мнение.
Ну, этот топик отлично показывает, оправдано ли такое мнение или нет.

Цитата Сообщение от lemial Посмотреть сообщение
Ну так подскажет кто по этому сеттеру?
setter, судя из названия, должен устанавливать какое-то внутреннее состояние объекта. Если ты делаешь return или puts аргумента метода, то внутреннее состояние объекта не меняется: ты просто его возвращаешь (return) или печатаешь (puts).

Как пишутся setter'ы на Ruby:

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
[1] pry(main)> class Foo
[1] pry(main)*   def fio=(fname); @fname = fname; end
[1] pry(main)*   def fio; @fname; end
[1] pry(main)* end  
=> :fio
[2] pry(main)> f = Foo.new
=> #<Foo:0x0000000159b1f8>
[3] pry(main)> f.fio = 'lemial'
=> "lemial"
[4] pry(main)> puts f.fio
lemial
=> nil
[5] pry(main)>
Либо то же самое, но короче:
Ruby
1
2
3
[1] pry(main)> class Foo
[1] pry(main)*   attr_accessor :fio
[1] pry(main)* end
0
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8
16.11.2014, 13:27  [ТС]
Да с этим я разобрался, спасибо, но в данном случае, этот мотод описан в концерне а не в классе, как работать с этим методом в данной ситуации?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.11.2014, 15:56
Включаешь concern в класс, должно работать так, как если бы этот метод был определён в классе.
0
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8
16.11.2014, 21:51  [ТС]
А там где методы из этого концерна вызываются тоже переделывать надо будет? Вы меня извините, просто я когда-то писал на C++ и методы в те времена назывались функциями
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.11.2014, 04:59
Цитата Сообщение от lemial Посмотреть сообщение
А там где методы из этого концерна вызываются тоже переделывать надо будет?
Не, не надо.
0
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8
17.11.2014, 13:25  [ТС]
А можно подробнее про self в данном конкретном случае?

Добавлено через 8 минут
Цитата Сообщение от Nameless One Посмотреть сообщение
Не, не надо.
Nameless One, а вы раньше никакого отношения к форуму лемиал.нет не имели?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.11.2014, 14:25
Цитата Сообщение от lemial Посмотреть сообщение
А можно подробнее про self в данном конкретном случае?
Опиши поподробней данный конкретный случай и что именно ты хочешь услышать.

Цитата Сообщение от lemial Посмотреть сообщение
Nameless One, а вы раньше никакого отношения к форуму лемиал.нет не имели?
В первый раз про такой слышу.
0
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8
17.11.2014, 15:10  [ТС]
Цитата Сообщение от Nameless One Посмотреть сообщение
Опиши поподробней данный конкретный случай и что именно ты хочешь услышать.
Временно сделал через переменную, т.е.:

Ruby
1
2
3
4
5
6
7
8
@fname = ''
def fname=(fname)
  @fname = fname
end
 
def other_function
  puts @fname
end
Криво, вот думаю как сделать более лаконично...
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
17.11.2014, 15:13
Какой кошмар. Зачем вообще писать начинать на языке даже не изучив его основ.
Выкинуть все строки и заменить 1-ой
Ruby
1
attr_accessor :fname
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.11.2014, 15:15
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[1] pry(main)> class Foo
[1] pry(main)*   def initialize; @fname = ''; end
[1] pry(main)*   attr_writer :fname
[1] pry(main)*   def puts_fname; puts @fname; end
[1] pry(main)* end  
=> :puts_fname
[2] pry(main)> f = Foo.new
=> #<Foo:0x00000002400f68 @fname="">
[3] pry(main)> f.fname = 'lemial'
=> "lemial"
[4] pry(main)> f.puts_fname
lemial
=> nil
[5] pry(main)>
0
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 8
17.11.2014, 15:20  [ТС]
Спасибо!
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.11.2014, 15:21
MpaKus, опередил. Присоединяюсь к совету изучить основы. lemial, ты сейчас задаёшь вопросы, которые подробно разжёваны в любой книге по Ruby. Если ты потратишь пару-тройку дней на систематическое изучение языка, то в дальнейшем сэкономишь кучу времени себе и, самое главное, людям, которые в противном случае потратят это время на то, чтобы ответить на вопросы уровня "сколько будет дважды два". Попробуй, не пожалеешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2014, 15:21
Помогаю со студенческими работами здесь

подскажите новичку
Народ, всем привет, решил я создать сайт про ЛАДУ-2112, взял готовый движок Joomla, подскажите как лучше сделать выложить сайт на платный...

Подскажите новичку
День добрый! Спаял на днях девайс, с пайкой начал дружить только недавно, поэтому очень прошу высказать свое мнение, может дать советы,...

подскажите новичку
здравствуйте! Зарегистрировала сайт в Рамблер, Яндекс, Майл, когда после регистрации происходит индексация (прошло 4 дня)? Каким образом...

Подскажите новичку
Хочу комп... Посмотрел вот такую материнку GigaByte GA-Z170-HD3, Socket1151, 4DDR4. Поддерживает частоту оперативки от 2133 до 3466 МГц. ...

Подскажите новичку
Доброе время суток! Есть такая топология,коммутаторы под номером 1 отвечают домам,а коммутаторы под номером 2 этажам.Каждый этаж...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru