2014-01-29 4 views
1

Извините за вопрос новичка. Загружал файл .txt в следующий код:Насколько далеко. К концу строки?

line_count = 0 
    File.open("text.txt").each {|line| line_count += 1} 
    puts line_count 

ли .each просто читать до конца строки, прежде чем передать его значение в блоке кода? Маленькое объяснение было бы здорово. Благодаря!

ответ

1

Это действительно важно читать документацию, потому что все виды вещей объясняются там. Например, 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» или «.». или "", в зависимости от вашей прихоти и фантазии на данный момент.

Смежные вопросы