как понять переименовать {old = "temp.lua", new = "temp1.lua"}? - PullRequest
0 голосов
/ 10 ноября 2019

Я играю с этой ссылкой lua: http://underpop.free.fr/l/lua/docs/programming-in-lua-first-edition.pdf и запутался в функции переименования. Я опробовал его и получил только сообщение об ошибке:

> rename{old = "temp.lua", new = "temp1.lua"}
stdin:1: attempt to call global 'rename' (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: in ?
> os.rename{old = "temp.lua", new = "temp1.lua"}
stdin:1: bad argument #1 to 'rename' (string expected, got table)
stack traceback:
    [C]: in function 'rename'
    stdin:1: in main chunk
    [C]: in ?

Более того, я изучаю Lua, потому что я читаю фрагмент кода, который написан на Lua. Я не думаю, что приведенная выше ссылка, программирование на lua first edition, является хорошим руководством. Я также нашел справочное меню, но оно мне тоже не совсем понравилось. Может ли кто-нибудь предоставить хороший учебник, основанный на вашем мнении?

РЕДАКТИРОВАТЬ: Я попробовал еще раз со следующим кодом:

> function rename(arg)
>>   return os.rename(arg.old, arg.new)
>> end
> 
> rename{old = "temp.lua", new = "temp1.lua"}

Это работает на этот раз.

1 Ответ

2 голосов
/ 11 ноября 2019
stdin:1: attempt to call global 'rename' (a nil value)

Это сообщение об ошибке сообщает вам, в чем именно заключается проблема.

Это вызвано этой строкой:

rename{old = "temp.lua", new = "temp1.lua"}

rename - нулевое значение. Следовательно, Луа не знает, что делать, если ты это называешь. Чтобы избежать этой ошибки, вы должны определить переименование как вызываемую переменную, например.

Позвольте мне процитировать учебник, который вам не подходит.

rename{old="temp.lua", new="temp1.lua"}

Соответственно, мы определяем переименование только с одним параметром и получаем фактические аргументы из этого параметра:

function rename (arg)
   return os.rename(arg.old, arg.new)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...