Ajax_indicator
закроется через 10 сек Frontend_notifier_close_notification_ico
На сервере произошла ошибка. Мы уже уведомлены об этом и скоро разберемся.
Мы учим полезным скиллам
Вы не залогинены. Чтобы быстро подписываться на интересующие разделы и задавать вопросы в Q/A вам нужно войти или зарегистрироваться.

Язык программирования Ruby -> вопросы

Upvote Upvote_done
0
Downvote Downvote_done

Прозвучала фраза "закрываем блоком"

задал Senich 2 месяца назад к скринкасту исключительные ситуации.
Вот на этой строкеFile.open( "#{@owner}_cart.txt", "w" ) {}не очень понял что происходит после того как ставим фигурные скобки после открытия файла. Ведь если их не ставить то ничего не меняется, программа работает как и прежде.
Преждем чем вы сможете написать ответ, вы должны зарегистрироваться или войти.

Ответы:

Upvote Upvote_done
0
Downvote Downvote_done
Correct_answer_done
ответил anisim 1 месяц назад
без фигурных скобок команда File.open(',,','w') возвращает объект открытого файла, связанного с файлом на диске, ожидающего записи.
если не присваивать результат этой команды переменной, то команда бесполезна - файл на диске будет заблокирован до закрытия процесса ruby или irb, а управлять им из программы (что-то записать или закрыть и освободить на диске) нельзя, потому что на него нет ссылки

однострочный вариант с фигурными скобками (или многострочный с do .. end) предполагает, что все действия выполняются во внутренних инструкциях. Поэтому в любом случае возвращается только количество байт при успешной записи. По окончанию действий внутри фигурных скобок (или do .. end) файл автоматически закрывается и освобождается. Сам объект файла при приёме с фигурными скобками доступен в таком формате: File.open( "#{@owner}_cart.txt", "w" ) {|f| f.write "#{@owner} was here."}
где f - объект файла

Комментарии к этому ответу:

т.е. {} присваивает значение полученное из блока какой то переменной? Если да, то какой? Просто какой то виртуальной величине, над которой идут изменения в дальнейшем?

— написал Senich