1

ここで何が起こっているのか、またはこの場合の整数が何であるかはわかりません。コードは次のとおりです。

def build_array_from_file(filename)
    contents = []
    File.read(File.expand_path('lib/project_euler/' + filename), 'r') do |file|
      while line = file.get
        contents << line
      end
    end
    contents
  end

filename は文字列で、パスが有効であることを確認しました。

何かご意見は?ありがとう。

4

2 に答える 2

7

File.readには、モードにもブロックにも 2 番目の引数がありません。それはFile.openです。

contents_string = File.read(File.expand_path('lib/project_euler/' + filename))

次のように書くこともできます。

contents = File.open(path).lines # returns a lazy enumerator, keeps the file open

または:

contents = File.readlines(path) # returns an array, the file is closed.
于 2012-06-19T21:14:53.113 に答える
1

File.readモードは必要ありませんr- で既に「読み取り」を要求していますFile.read。パラメータ foFile.readは、ファイル名の後のオフセットと長さです (これが、エラー メッセージに整数が期待されていた理由です)。

モードまたはFile.read(filename, :mode => 'r')モードが必要な場合は、これが役立つ場合があります(ただし、 -オプションもあります)。rbr:utf-8encoding

于 2012-06-19T21:29:43.457 に答える