0

这就是我阅读文件的方式:

raw = File.open(fname) { |f| f.read }

我想我会利用 Ruby 的快捷方式,例如&将其参数转换为 proc 的运算符。例如,可以使用

nums = gets.split.map &:to_i   # get numbers from stdin

代替

nums = gets.split.map { |x| x.to_i }

所以,我尝试了:

raw = File.open(fname) &:read

我得到了错误:

path/to/file.rb:3:in `<main>': undefined method `&' for #<File:testing.txt> (NoMethodError)

它也不适用于括号 ( raw = File.open(fname)(&:read))。

如何使用此快捷方式打开文件?如果我不能,那为什么不呢?

4

1 回答 1

2

尝试

raw = File.open(fname).read

编辑:问题在于它没有关闭文件,正如 OP 所述。

但是,这确实适用于 ruby​​ 1.9.3p448:

raw = File.open(fname, &:read)

这只是为了演示在 ruby​​ 中使用 &/symbol 表示块。正如 sawa 指出的那样,在实际实践中,通常会这样做:

raw = File.read(fname)
于 2013-11-08T23:32:21.070 回答