0

これは私が自分のファイルを読んでいる方法です:

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

&引数を proc に変換する演算子など、Ruby のショートカットを利用しようと考えました。たとえば、次のように使用できます。

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 でのブロックの &/ 記号表現の使用を示すためのものです。澤が指摘するように、実際には、通常は次のようにします。

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