将 gets.chomp 作为参数传递
Passing an gets.chomp as an argument
input_file = ARGV.first
def print_all(f)
puts f.read
end
def rewind(f)
f.seek(0)
end
def print_a_line(line_count, f)
puts "#{line_count}, #{f.gets.chomp}"
end
current_file = open(input_file)
puts "First let's print the whole file:¥n"
print_all(current_file)
puts "Let's rewind kind a like a tape"
rewind(current_file)
puts "Let's print three lines:"
current_line = 1
print_a_line(current_line, current_file)
current_line += 1
print_a_line(current_line, current_file)
我确定与此有点相似 post,但我的问题有点不同。如上所示,print_a_line 方法有两个参数,即 line_count 和 f.
1) 据我了解,line_count 参数仅用作 current_line 的变量,它只是一个整数。它与 rewind(f) 方法有什么关系,因为当我 运行 代码时,方法 print_a_line 显示:
1, Hi
2, I'm a noob
其中 1 是第一行,2 是第二行。 line_count只是一个数字,ruby怎么知道1是第1行,2是第2行呢?
2) 为什么在方法print_a_line中使用gets.chomp?如果我像这样通过 f
def print_a_line(line_count, f)
puts "#{line_count}, #{f}"
end
我会得到一个疯狂的结果
1, #<File:0x007fccef84c4c0>
2, #<File:0x007fccef84c4c0>
因为 IO#gets
reads next line from readable I/O stream(in this case it's a file) and returns a String
object when reading successfully and not reached end of the file. And, chomp
从 String
对象中删除回车 return 个字符。
所以当你有一个包含以下内容的文件时:
This is file content.
This file has multiple lines.
代码将打印:
1, This is file content.
2, This file has multiple lines.
在第二种情况下,您传递的是文件对象本身而不是读取它。因此,您会在输出中看到这些对象。
input_file = ARGV.first
def print_all(f)
puts f.read
end
def rewind(f)
f.seek(0)
end
def print_a_line(line_count, f)
puts "#{line_count}, #{f.gets.chomp}"
end
current_file = open(input_file)
puts "First let's print the whole file:¥n"
print_all(current_file)
puts "Let's rewind kind a like a tape"
rewind(current_file)
puts "Let's print three lines:"
current_line = 1
print_a_line(current_line, current_file)
current_line += 1
print_a_line(current_line, current_file)
我确定与此有点相似 post,但我的问题有点不同。如上所示,print_a_line 方法有两个参数,即 line_count 和 f.
1) 据我了解,line_count 参数仅用作 current_line 的变量,它只是一个整数。它与 rewind(f) 方法有什么关系,因为当我 运行 代码时,方法 print_a_line 显示:
1, Hi
2, I'm a noob
其中 1 是第一行,2 是第二行。 line_count只是一个数字,ruby怎么知道1是第1行,2是第2行呢?
2) 为什么在方法print_a_line中使用gets.chomp?如果我像这样通过 f
def print_a_line(line_count, f)
puts "#{line_count}, #{f}"
end
我会得到一个疯狂的结果
1, #<File:0x007fccef84c4c0>
2, #<File:0x007fccef84c4c0>
因为 IO#gets
reads next line from readable I/O stream(in this case it's a file) and returns a String
object when reading successfully and not reached end of the file. And, chomp
从 String
对象中删除回车 return 个字符。
所以当你有一个包含以下内容的文件时:
This is file content.
This file has multiple lines.
代码将打印:
1, This is file content.
2, This file has multiple lines.
在第二种情况下,您传递的是文件对象本身而不是读取它。因此,您会在输出中看到这些对象。