打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

本站正在进行早期测试,目前仍存在许多内容的缺失。

模块:Static/doc:修订间差异

来自星砂岛百科
Sizau留言 | 贡献
创建页面
 
Sizau-bot留言 | 贡献
同步更新物品导航框
 
第1行: 第1行:
== 概述 ==
== 概述 ==
模块 '''Static''' 返回一个表,用于在多次 {{tcd|#invoke:}} 调用之间共享静态数据。
'''Static''' 返回一个页面级共享表,用于在同一页面内的多次 <code><nowiki>#invoke</nowiki></code> 或 <code><nowiki>require</nowiki></code> 调用之间共享静态状态。


== 示例 ==
== 用法 ==
<syntaxhighlight lang='lua'>
<syntaxhighlight lang="lua">
local p = {}
local static = require('Module:Static')


function p.main()
static.Example = static.Example or {}
    local static = require('Module:Static')
static.Example.count = (static.Example.count or 0) + 1
    static.Example = static.Example or {}
return static.Example.count
    static.Example.x = (static.Example.x or 0) + 1
    return static.Example.x
end
 
return p
</syntaxhighlight>
</syntaxhighlight>


<code>Module:foo</code> 使用了上述代码,然后页面调用 <code><nowiki>{{#invoke:foo|main}} {{#invoke:foo|main}}</nowiki></code>,将返回 <code>1 2</code>。
== 示例 ==
<syntaxhighlight lang="lua">
local static = require('Module:Static')


== 注意事项 ==
static._global = static._global or {}
由于此模块存储的值会在页面范围内共享,为防止模块间相互干扰,模块'''必须'''在自身命名空间(子表)下存储数据,且'''不能'''修改其他命名空间的数据。
static._global.sample = 'ok'
 
return static._global.sample
例如在 <code>Module:Example</code> 中:
<syntaxhighlight lang='lua'>
local static = require('Module:Static')
static.Example = static.Example or {}
static.Example.exampleData = 3
</syntaxhighlight>
</syntaxhighlight>


子表命名规则:
== 注意事项 ==
* 与模块名一致
* 默认应在各模块自己的子表下保存状态,避免互相污染。
* 首字母大写
* 只有明确需要跨模块共享时,才使用 <code><nowiki>_global</nowiki></code> 这样的公共命名空间。
* 空格替换为下划线
* 该模块本身不提供 <code><nowiki>#invoke</nowiki></code> 入口,建议通过 <code><nowiki>require('Module:Static')</nowiki></code> 使用。
 
如果需要跨模块共享全局数据,请使用命名空间 <code>_global</code>
 
若使用全局变量,请在下方表格登记:
{| class="wikitable"
! 变量名称
! 读取模块
! 写入模块
! 类型
! 备注
|}


<includeonly>
[[分类:元模块]]
[[Category:元模块]]
</includeonly>
<noinclude>
</noinclude>

2026年4月2日 (四) 15:06的最新版本

概述

Static 返回一个页面级共享表,用于在同一页面内的多次 #invokerequire 调用之间共享静态状态。

用法

local static = require('Module:Static')

static.Example = static.Example or {}
static.Example.count = (static.Example.count or 0) + 1
return static.Example.count

示例

local static = require('Module:Static')

static._global = static._global or {}
static._global.sample = 'ok'
return static._global.sample

注意事项

  • 默认应在各模块自己的子表下保存状态,避免互相污染。
  • 只有明确需要跨模块共享时,才使用 _global 这样的公共命名空间。
  • 该模块本身不提供 #invoke 入口,建议通过 require('Module:Static') 使用。