2017-09-19 14 views
1

私はLuaに全く慣れていないので、いくつかのLuaコードで作業する必要があります。Lua:Yieldエラー:ゼロ値のインデックスを作成しようとしました(ローカル 'f')

私はファイルを渡し、そのファイルの内容を文字列として読みたいと思っています。そのために

function readAll(file) 
    local io = require("io") 
    local f = io.open(file, "rb") 
    local content = f:read("*all") 
    f:close() 
    return content 
end 

、私は取得しています:

Lua: Yield error: [string "myFile.lua"]:101: attempt to index a nil value (local 'f') 

をエラーがこの行に表示されます:

local content = f:read("*all") 

これを引き起こしている可能性がどのような任意のアイデアを?

+2

を試してみてくださいhttps://www.lua.org/pil/21.2.htmlを表示するには、エラーの場合はnilを返すことができます。例filleまたはdirectoryが存在しないか、パーミッションが原因でファイルがopendされない –

+0

そのメッセージはLuaライブラリからのものではありません。埋め込みLuaを使用しているプログラムは何ですか? – lhf

答えて

2

エラーは、io.openが失敗したことを意味します。なぜ、これにaccoridng

local f = assert(io.open(file, "rb")) 

または

local f,e = io.open(file, "rb") 
if f==nil then print(e) return nil end 
+0

ありがとうございます。今すぐ取得します: 'Lua:収量エラー:無制限の値を呼び出そうとしました(グローバル 'アサート')。私は 'assert'を含むライブラリをインポートする必要がありますか? – octavian

+1

@octavian、なぜ 'assert'が定義されていないのか分かりません。 2番目のフォームを試してください。 – lhf

+0

あなたはそうです、基礎となるファイルは存在しません。 'assert'を使うために私が何をインポートする必要があるのか​​分からないでしょうか? – octavian

関連する問題