Skip to content

Instantly share code, notes, and snippets.

@yesnik
Last active August 29, 2015 14:12
Show Gist options
  • Save yesnik/acd1d41f6aa83180851a to your computer and use it in GitHub Desktop.
Save yesnik/acd1d41f6aa83180851a to your computer and use it in GitHub Desktop.
Задание по Ruby (IO)
# Пример 1
f = File.open('file.txt', 'w+')
f.write('Hello')
# Почему выводит "", а не "Hello"?
p f.read() #=> ""
# Пример 2
file = File.open("file.txt", "r")
p file.read #=> "Hello"
# Почему второй read снова не выводит "Hello"?
p file.read #=> ""
@yesnik
Copy link
Author

yesnik commented Dec 26, 2014

Пример 1. Ответ: Когда выполнилась команда f.write('Hello'), указатель сместился в конец. С него и началось чтение при вызове f.read(). Чтобы это устранить, достаточно поместить перед f.read() команду f.rewind. В таком случае указатель сместится в начало и f.read() выведет "Hello".
Пример 2. Ответ: Каждая операция read начинается с места, где остановилась последняя операция read. Поэтому второму read ничего не осталось для прочтения.

@vkuznetsov
Copy link

ОК

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment