Method: IO#each
- Defined in:
- io.c
#each(sep = $/[, getline_args]) {|line| ... } ⇒ IO #each(limit[, getline_args]) {|line| ... } ⇒ IO #each(sep, limit[, getline_args]) {|line| ... } ⇒ IO #each(...) ⇒ Object
ios.each_line(sep=$/ [, getline_args]) {|line| block } -> ios
ios.each_line(limit [, getline_args]) {|line| block } -> ios
ios.each_line(sep, limit [, getline_args]) {|line| block } -> ios
ios.each_line(...) -> an_enumerator
Executes the block for every line in ios, where lines are separated by sep. ios must be opened for reading or an IOError will be raised.
If no block is given, an enumerator is returned instead.
f = File.new("testfile")
f.each {|line| puts "#{f.lineno}: #{line}" }
produces:
1: This is line one
2: This is line two
3: This is line three
4: And so on...
See IO.readlines for details about getline_args.
3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 |
# File 'io.c', line 3945
static VALUE
rb_io_each_line(int argc, VALUE *argv, VALUE io)
{
VALUE str;
struct getline_arg args;
RETURN_ENUMERATOR(io, argc, argv);
prepare_getline_args(argc, argv, &args, io);
if (args.limit == 0)
rb_raise(rb_eArgError, "invalid limit: 0 for each_line");
while (!NIL_P(str = rb_io_getline_1(args.rs, args.limit, args.chomp, io))) {
rb_yield(str);
}
return io;
}
|