Lua-cjson -> require(cjson) успешно, затем ошибки при вызове cjson.encode

Я пытаюсь кодировать/декодировать JSON в Lua, используя CJSON. Я скачал lua-cjson с помощью Luarocks (http://www.kyne.com.au/~mark/software/lua-cjson-manual.html).

В интерпретаторе Lua я использую пример из руководства cjson:

> local cjson = require "cjson"
> value = { true, { foo = "bar" } } 
> json_text = cjson.encode(value)
stdin:1: attempt to index a nil value (global 'cjson')
stack traceback:
    stdin:1: in main chunk
    [C]: in ?

Я знаю, что cjson находится, потому что если бы я сделал 'require "foobar"', Lua выдал бы ошибку. Он просто не может использовать модуль. Любая помощь будет оценена по достоинству.


person Cam Hashemi    schedule 30.03.2015    source источник


Ответы (1)


Каждая строка в интерактивном сеансе представляет собой отдельный фрагмент. Таким образом, локальная переменная, созданная в строке 1, больше не существует в следующих строках. Обратите внимание, что в сообщении об ошибке упоминается глобальная переменная. Попробуйте удалить local.

person lhf    schedule 30.03.2015
comment
Спасибо. Написание сценария Lua с приведенным выше кодом работало, даже с включенным «локальным». - person Cam Hashemi; 30.03.2015
comment
В сценарии вы должны использовать local и избегать установки глобального. Я знаю, что это сбивает с толку, но, к сожалению, из-за этого ограничения интерпретатора вы вынуждены использовать два разных стиля программирования, независимо от того, работаете ли вы в командной строке или в сценарии. - person Hisham H M; 30.03.2015