[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: A guide to building Lua modules
- From: Dirk Laurie <dirk.laurie@...>
- Date: Mon, 14 Apr 2014 18:19:13 +0200
2014-04-14 18:03 GMT+02:00 Coroutines <coroutines@gmail.com>:
> On Mon, Apr 14, 2014 at 8:55 AM, Dirk Laurie <dirk.laurie@gmail.com> wrote:
>> 2014-04-14 17:29 GMT+02:00 Coroutines <coroutines@gmail.com>:
>>
>>> If a module returns false or nil, I believe it will be loaded from the
>>> file on every require().
>>
>> Not quite. The go/nogo test is whether there is an entry for the module
>> in package.loaded.
>>
>> $ lua
>> Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio
>>> package.loaded.lpeg = "bazinga"
>>> lpeg = require"lpeg"
>>> =lpeg
>> bazinga
>>
>
> I thought it checked package.loaded.module_name for a boolean-true
> value and returned that, otherwise it loaded the module (if it exists)
> from the search paths, no? If you return nil/false it'll be loaded
> from the file every time?
>
The test is simply on the existence of the key in the table.
Whether it was put there by `require` is immaterial. If the
next `require` finds no key, it reloads, otherwise not.
> package.loaded.lpeg = "false"
> lpeg = require"lpeg"
> return lpeg
false
> package.loaded.lpeg = nil
> lpeg = require"lpeg"
> return lpeg
table: 0x91c6de0