Это действительно важно читать документацию, потому что все виды вещей объясняются там. Например, the documentation for each
говорит:
Выполняет блок для каждой строки в ios, где линии разделены sep.
sep
означает «\ г», «\ п» или «\ г \ п», в зависимости от операционной системы код работает, на котором также значение специальной $/
глобальной переменной, которая содержит строку по умолчанию для этого ОС. Вы можете указать Ruby использовать другое значение для линейного конца/разделителя, если вы знаете, что файл использует что-то еще.
Что касается вашего кода:
Я бы сделать это так:
line_count = 0
File.foreach("text.txt") do |line|
line_count += 1
end
puts line_count
foreach
очень очевидны, что важно при написании кода. Вы хотите, чтобы он был самодокументирован как можно больше. foreach
выполняет итерацию по каждой строке в файле. Он также предполагает, что линейные концы совпадают с $/
, но вы можете заставить его быть чем-то другим, возможно, буквой «z» или «.». или "", в зависимости от вашей прихоти и фантазии на данный момент.