Help:Lua:修订间差异

帮助页面
添加的内容 删除的内容
无编辑摘要
(机器人:整理源码)
第211行: 第211行:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
-- 长字符串
-- 长字符串
foo = [[
foo = [[bar\tbaz]]
bar\tbaz
]]


-- 等效于此引号分隔的字符串
-- 等效于此引号分隔的字符串
第223行: 第221行:
==== 数字(number) ====
==== 数字(number) ====


Lua只有一种数字类型,就是典型的[[双精度浮点数|双精度浮点数]]。这种格式下,-9007199254740992到9007199254740992之间的整数都会准确表达,更大的数和带有小数部分的数将会受到舍入的误差。
Lua只有一种数字类型,就是典型的[[双精度浮点数]]。这种格式下,-9007199254740992到9007199254740992之间的整数都会准确表达,更大的数和带有小数部分的数将会受到舍入的误差。


数字可以用点(<code>.</code>)来表示小数,例如<code>123456.78</code>。数字也可以用不带空格的[[科学计数法|科学计数法]],例如<code>1.23e-10</code>、<code>123.45e20</code>或者<code>1.23E5</code>。也可以用16进制表示整数,方法就是以<code>0x</code>开头,例如<code>0x3A</code>。
数字可以用点(<code>.</code>)来表示小数,例如<code>123456.78</code>。数字也可以用不带空格的[[科学计数法]],例如<code>1.23e-10</code>、<code>123.45e20</code>或者<code>1.23E5</code>。也可以用16进制表示整数,方法就是以<code>0x</code>开头,例如<code>0x3A</code>。


虽然[[NaN|NaN]]和正负无穷大都可以正确地储存、处理,但是Lua不提供相应的直接文字表示方法。<code>math.huge</code>是正无穷大,相当于<code>1/0</code>,此外,像<code>0/0</code>这样的除法就可以生成NaN。
虽然[[NaN]]和正负无穷大都可以正确地储存、处理,但是Lua不提供相应的直接文字表示方法。<code>math.huge</code>是正无穷大,相当于<code>1/0</code>,此外,像<code>0/0</code>这样的除法就可以生成NaN。


重申一遍,在转化为布尔值时,任何数字都会被视为true。这不像其他语言,数字0通常视为false。数字在转化为字符串时,数字都会被视为有限小数和科学计数;NaN是<syntaxhighlight lang="lua" inline>"nan"</syntaxhighlight>或者<syntaxhighlight lang="lua" inline>"-nan"</syntaxhighlight>;无穷大就是<syntaxhighlight lang="lua" inline>"inf"</syntaxhighlight>或<syntaxhighlight lang="lua" inline>"-inf"</syntaxhighlight>。
重申一遍,在转化为布尔值时,任何数字都会被视为true。这不像其他语言,数字0通常视为false。数字在转化为字符串时,数字都会被视为有限小数和科学计数;NaN是<syntaxhighlight lang="lua" inline>"nan"</syntaxhighlight>或者<syntaxhighlight lang="lua" inline>"-nan"</syntaxhighlight>;无穷大就是<syntaxhighlight lang="lua" inline>"inf"</syntaxhighlight>或<syntaxhighlight lang="lua" inline>"-inf"</syntaxhighlight>。
第287行: 第285行:
Lua中的函数是一等的(first-class)的值:可以匿名创建,或作为参数传递,或给变量赋值,等等。
Lua中的函数是一等的(first-class)的值:可以匿名创建,或作为参数传递,或给变量赋值,等等。


函数通过<code>function</code>(“函数”的英文)关键字,并使用圆括号调用。有一些[[语法糖|语法糖]]可以用来命名函数,局部函数,并且可以作为表中的一个域值。参看[[#Function declarations|函数声明]]和[[#Function calls|函数调用]]。
函数通过<code>function</code>(“函数”的英文)关键字,并使用圆括号调用。有一些[[语法糖]]可以用来命名函数,局部函数,并且可以作为表中的一个域值。参看[[#Function declarations|函数声明]]和[[#Function calls|函数调用]]。


Lua函数是[[闭包 (计算机科学)|闭包]],这意味着它们维护对它们声明的作用域的引用,并可以访问和操作该作用域中的变量。
Lua函数是[[闭包 (计算机科学)|闭包]],这意味着它们维护对它们声明的作用域的引用,并可以访问和操作该作用域中的变量。
第342行: 第340行:
<div id="binop-note" style="padding:0 1em;text-indent: -1em;"><sup>†</sup> 对于二元运算符,Lua首先检查左边的变量的元表(若有),如果左边变量的元方法不存在则寻找右边的变量的元方法。</div>
<div id="binop-note" style="padding:0 1em;text-indent: -1em;"><sup>†</sup> 对于二元运算符,Lua首先检查左边的变量的元表(若有),如果左边变量的元方法不存在则寻找右边的变量的元方法。</div>
<div id="relop-note" style="padding:0 1em;text-indent: -1em;"><sup>‡</sup> 对于关系运算符,只有当两个参数的元方法都指定了同一个函数时,元表才会被使用。不同的匿名函数,即使具有相同的主体和闭包,也不可能被认为是相同的。</div>
<div id="relop-note" style="padding:0 1em;text-indent: -1em;"><sup>‡</sup> 对于关系运算符,只有当两个参数的元方法都指定了同一个函数时,元表才会被使用。不同的匿名函数,即使具有相同的主体和闭包,也不可能被认为是相同的。</div>
<div id="metatable-note" style="padding:0 1em;text-indent: -1em;"><sup>*</sup>
<div id="metatable-note" style="padding:0 1em;text-indent: -1em;"><sup>*</sup>
__metatable会同时影响[[#getmetatable|getmetatable()]]和[[#setmetatable|setmetatable()]]</div>
__metatable会同时影响[[#getmetatable|getmetatable()]]和[[#setmetatable|setmetatable()]]</div>
</div>
</div>
第709行: 第707行:
注意,这里的冒号符号与[[#Function calls|函数调用]]的冒号符号相类似,在参数列表的开头添加了一个隐式参数,名为<code>self</code>。
注意,这里的冒号符号与[[#Function calls|函数调用]]的冒号符号相类似,在参数列表的开头添加了一个隐式参数,名为<code>self</code>。


===错误处理===
=== 错误处理 ===


错误可以通过[[#error|error()]]和[[#assert|assert()]]“抛出”,使用[[#pcall|pcall()]] 或者[[#xpcall|xpcall()]]可以“捕获”错误。注意,某些Scribunto的内部错误是不能被Lua层面的代码捕获处理。
错误可以通过[[#error|error()]]和[[#assert|assert()]]“抛出”,使用[[#pcall|pcall()]] 或者[[#xpcall|xpcall()]]可以“捕获”错误。注意,某些Scribunto的内部错误是不能被Lua层面的代码捕获处理。
第853行: 第851行:
用指定的参数在“保护模式”下调用函数<code>f</code>。这意味着如果在调用<code>f</code>时出错,pcall会返回false与错误消息。如果没有错误发生,pcall会返回true与调用返回的所有值。
用指定的参数在“保护模式”下调用函数<code>f</code>。这意味着如果在调用<code>f</code>时出错,pcall会返回false与错误消息。如果没有错误发生,pcall会返回true与调用返回的所有值。


用[[伪代码|伪代码]]表示,<code>pcall</code>的定义类似如下:
用[[伪代码]]表示,<code>pcall</code>的定义类似如下:


<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
第912行: 第910行:
<code>base</code>是可选的,默认为10,指定解析数字的进位基数。这个基数可以是2到36之间的任何整数。对于大于10,字母A(大小写均可)代表10,B代表11,以此类推,Z代表35。
<code>base</code>是可选的,默认为10,指定解析数字的进位基数。这个基数可以是2到36之间的任何整数。对于大于10,字母A(大小写均可)代表10,B代表11,以此类推,Z代表35。


十进制下,值可以有小数部分,或者以[[科学计数法|科学计数法]]表示,而且甚至可以以“0x”开头以表示16进制。其他情况,只会接受不带符号的整数。
十进制下,值可以有小数部分,或者以[[科学计数法]]表示,而且甚至可以以“0x”开头以表示16进制。其他情况,只会接受不带符号的整数。


==== tostring ====
==== tostring ====
第938行: 第936行:
这个很像<code>[[#pcall|pcall]]</code>,只是错误消息在返回之前传递到函数<code>errhandler</code>中。
这个很像<code>[[#pcall|pcall]]</code>,只是错误消息在返回之前传递到函数<code>errhandler</code>中。


用[[伪代码|伪代码]]表示,<code>xpcall</code>的定义类似如下:
用[[伪代码]]表示,<code>xpcall</code>的定义类似如下:


<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
第1,084行: 第1,082行:
参数<code>m</code>、<code>n</code>可省略,但是如果指定了,则必须能够转化为整数。
参数<code>m</code>、<code>n</code>可省略,但是如果指定了,则必须能够转化为整数。


*没有参数时返回区间<math>[0,1)</math>内的实数。
* 没有参数时返回区间<math>[0,1)</math>内的实数。
*有一个参数时返回区间<math>[1,m]</math>内的整数。
* 有一个参数时返回区间<math>[1,m]</math>内的整数。
*有两个参数时返回区间<math>[m,n]</math>内的整数。
* 有两个参数时返回区间<math>[m,n]</math>内的整数。


注意,如果<code>m</code>或者<code>n</code>小于−2147483648或者大于2147483647,或者<code>n - m</code>大于2147483646,那么输出可能会不正确。
注意,如果<code>m</code>或者<code>n</code>小于−2147483648或者大于2147483647,或者<code>n - m</code>大于2147483646,那么输出可能会不正确。
第1,146行: 第1,144行:
* hour(0~23)
* hour(0~23)
* min(0~59)
* min(0~59)
* sec(0~60,允许[[闰秒|闰秒]]的情况)
* sec(0~60,允许[[闰秒]]的情况)
* wday(weekday,Sunday是1)
* wday(weekday,Sunday是1)
* yday(一年的某一天)
* yday(一年的某一天)
第1,469行: 第1,467行:
模式可以包括用小括号括起来的子模式(sub-patterns),描述了“捕获”。匹配成功时,字符串的匹配捕获的子字符串会被存储(被“捕获”)以备使用。捕获是根据左边的括号被标号的。比如,在模式<code>(a*(.)%w(%s*))</code>中,匹配<code>a*(.)%w(%s*)</code>的字符串部分被存储在第一个捕获(所以是第一项),匹配<code>.</code>的字符被捕获,记为第2项,匹配<code>%s*</code>的则是第3项。
模式可以包括用小括号括起来的子模式(sub-patterns),描述了“捕获”。匹配成功时,字符串的匹配捕获的子字符串会被存储(被“捕获”)以备使用。捕获是根据左边的括号被标号的。比如,在模式<code>(a*(.)%w(%s*))</code>中,匹配<code>a*(.)%w(%s*)</code>的字符串部分被存储在第一个捕获(所以是第一项),匹配<code>.</code>的字符被捕获,记为第2项,匹配<code>%s*</code>的则是第3项。


捕获参考可以出现在字符串自身,而返回参考早前被捕获的文本。比如,<code>([a-z])%1</code>会匹配任何一对相同的小写字母,而<code>([a-z])([a-z])([a-z])[a-z]%3%2%1</code>会匹配任何7个字母的[[回文|回文]]。
捕获参考可以出现在字符串自身,而返回参考早前被捕获的文本。比如,<code>([a-z])%1</code>会匹配任何一对相同的小写字母,而<code>([a-z])([a-z])([a-z])[a-z]%3%2%1</code>会匹配任何7个字母的[[回文]]。


特殊情况,空的捕获<code>()</code>会捕获当前的字符串位置(一个数字)。比如我们对字符串<code>"flaaap"</code>执行模式<code>"()aa()"</code>,那么会有两个捕获:3和5。
特殊情况,空的捕获<code>()</code>会捕获当前的字符串位置(一个数字)。比如我们对字符串<code>"flaaap"</code>执行模式<code>"()aa()"</code>,那么会有两个捕获:3和5。
第1,862行: 第1,860行:
=== 语言库 ===
=== 语言库 ===


语言代码在语言代码中由描述。很多MediaWiki的语言代码类似于[[IETF语言标签|IETF语言标签]],但不是所有MediaWiki语言代码都是有效的IETF标签,反之亦然。
语言代码在语言代码中由描述。很多MediaWiki的语言代码类似于[[IETF语言标签]],但不是所有MediaWiki语言代码都是有效的IETF标签,反之亦然。


{{anchor|mw.language-object}}
{{anchor|mw.language-object}}
第1,893行: 第1,891行:


==== mw.language.getFallbacksFor ====
==== mw.language.getFallbacksFor ====
[[File:MediaWiki fallback chains.svg|thumb|备选链]]
[[File:MediaWiki fallback chains.svg|缩略图|备选链]]
<code>mw.language.getFallbacksFor( code )</code>
<code>mw.language.getFallbacksFor( code )</code>


第2,211行: 第2,209行:
返回表示消息键是否被禁用的布尔值。如果消息键不存在,或者消息是空字符串,或者是字符串"-"则返回true。
返回表示消息键是否被禁用的布尔值。如果消息键不存在,或者消息是空字符串,或者是字符串"-"则返回true。


===站点信息库 ===
=== 站点信息库 ===


==== mw.site.currentVersion ====
==== mw.site.currentVersion ====
第2,235行: 第2,233行:
* '''id''':命名空间数字。
* '''id''':命名空间数字。
* '''name''':本地命名空间名称。
* '''name''':本地命名空间名称。
*'''canonicalName''':规范(canonical)命名空间名称。
* '''canonicalName''':规范(canonical)命名空间名称。
* '''displayName''':为命名空间0设置,用于显示的名称(因为这个名称通常是空白字符串)。
* '''displayName''':为命名空间0设置,用于显示的名称(因为这个名称通常是空白字符串)。
* '''hasSubpages''':这个命名空间是否启用了子页面。
* '''hasSubpages''':这个命名空间是否启用了子页面。
第2,308行: 第2,306行:
* '''prefix'''——跨wiki前缀。
* '''prefix'''——跨wiki前缀。
* '''url'''——跨wiki指向的URL。页面名称由参数$1体现。
* '''url'''——跨wiki指向的URL。页面名称由参数$1体现。
* '''isProtocalRelative'''——布尔值,显示URL是否为[[URL|URL]]。
* '''isProtocalRelative'''——布尔值,显示URL是否为[[URL]]。
* '''isLocal'''——这个URL是否是当前wiki的站点的。
* '''isLocal'''——这个URL是否是当前wiki的站点的。
* '''isCurrentWiki'''——这个URL是否是为当前wiki的。
* '''isCurrentWiki'''——这个URL是否是为当前wiki的。
第2,325行: 第2,323行:
<code>mw.text.decode( s, decodeNamedEntities )</code>
<code>mw.text.decode( s, decodeNamedEntities )</code>


将字符串中的[[HTML元素|HTML元素]]替换为对应的字符。
将字符串中的[[HTML元素]]替换为对应的字符。


如果布尔值<code>decodeNameEntities</code>被省略或者为false,则只有被命名的实体“&amp;lt;”“&amp;gt;”“&amp;amp;”“&amp;quot;”和“&amp;nbsp;”会被认可。否则,认可的HTML5命名实体的列表会从PHP的[https://php.net/get_html_translation_table <code>get_html_translation_table</code>]函数中加载。
如果布尔值<code>decodeNameEntities</code>被省略或者为false,则只有被命名的实体“&amp;lt;”“&amp;gt;”“&amp;amp;”“&amp;quot;”和“&amp;nbsp;”会被认可。否则,认可的HTML5命名实体的列表会从PHP的[https://php.net/get_html_translation_table <code>get_html_translation_table</code>]函数中加载。
第2,334行: 第2,332行:
<code>mw.text.encode( s, charset )</code>
<code>mw.text.encode( s, charset )</code>


使用[[HTML实体|HTML实体]]替换字符串中的字符。字符“<”“>”“&”“"”和非换行空格会被适当的命名实体替换,所有其他的都会被替换为数字实体。
使用[[HTML实体]]替换字符串中的字符。字符“<”“>”“&”“"”和非换行空格会被适当的命名实体替换,所有其他的都会被替换为数字实体。


如果提供了<code>charset</code>,则它应该是合适的字符串,且被[[#Ustring patterns|Ustring模式]]的括号括住,比如<code>[set]</code>中的“set”。默认的charset是<code>'<>&"\'&nbsp;'</code>(末尾的空格为非换行空格,U+00A0)。
如果提供了<code>charset</code>,则它应该是合适的字符串,且被[[#Ustring patterns|Ustring模式]]的括号括住,比如<code>[set]</code>中的“set”。默认的charset是<code>'<>&"\'&nbsp;'</code>(末尾的空格为非换行空格,U+00A0)。
第2,408行: 第2,406行:
<code>mw.text.nowiki( s )</code>
<code>mw.text.nowiki( s )</code>


使用[[HTML实体|HTML实体]]替换字符串中的多种字符,以避免被解析为维基文本。包括:
使用[[HTML实体]]替换字符串中的多种字符,以避免被解析为维基文本。包括:


* 以下字符:<code>"</code>、<code>&</code>、<code>'</code>、<code><</code>、<code>=</code>、<code>></code>、<code>[</code>、<code>]</code>、<code>{</code>、<code>|</code>、<code>}</code>
* 以下字符:<code>"</code>、<code>&</code>、<code>'</code>、<code><</code>、<code>=</code>、<code>></code>、<code>[</code>、<code>]</code>、<code>{</code>、<code>|</code>、<code>}</code>
第2,556行: 第2,554行:
* '''subpageText''':如果这是个子页面,子页面名称。否则,和<code>title.text</code>相同。
* '''subpageText''':如果这是个子页面,子页面名称。否则,和<code>title.text</code>相同。
* '''canTalk''':这个标题的页面能否拥有讨论页。
* '''canTalk''':这个标题的页面能否拥有讨论页。
*'''exists''':该页面是否存在。Media命名空间页面的<code>file.exists</code>别名。对于File命名空间的页面,这将检查文件描述页面的存在,而不是文件本身。{{red|此函数[[#Expensive properties|可能为高开销]]}}。
* '''exists''':该页面是否存在。Media命名空间页面的<code>file.exists</code>别名。对于File命名空间的页面,这将检查文件描述页面的存在,而不是文件本身。{{red|此函数[[#Expensive properties|可能为高开销]]}}。
*'''file''','''fileExists''':参见下面的[[#File metadata|#文件元数据]]。
* '''file''','''fileExists''':参见下面的[[#File metadata|#文件元数据]]。
* '''isContentPage''':这个页面是否在内容命名空间内。
* '''isContentPage''':这个页面是否在内容命名空间内。
* '''isExternal''':此页面是否具有跨wiki的前缀。
* '''isExternal''':此页面是否具有跨wiki的前缀。
第2,599行: 第2,597行:
* '''pages''':如果文件格式支持多页,这是包含文件每个页面的表,否则为<code>nil</code>。[[#Length operator|“#”操作符]]可以用于获取文件页数。每个单独的页面表都包含一个width和height属性。
* '''pages''':如果文件格式支持多页,这是包含文件每个页面的表,否则为<code>nil</code>。[[#Length operator|“#”操作符]]可以用于获取文件页数。每个单独的页面表都包含一个width和height属性。
* '''size''':文件的字节长度。
* '''size''':文件的字节长度。
* '''mimeType''':文件的[[MIME类型|MIME类型]]。
* '''mimeType''':文件的[[MIME类型]]。
* '''length''':媒体文件的长度,单位为秒。不支持长度的媒体则为0。
* '''length''':媒体文件的长度,单位为秒。不支持长度的媒体则为0。


第2,613行: 第2,611行:
<code>mw.uri.encode( s, enctype )</code>
<code>mw.uri.encode( s, enctype )</code>


[[百分号编码|百分号编码]]字符串。默认类型,<code>"QUERY"</code>,使用“+”编码空格以用于查询字符;<code>"PATH"</code>将空格编码为%20,<code>"WIKI"</code>将空格编码为“_”。
[[百分号编码]]字符串。默认类型,<code>"QUERY"</code>,使用“+”编码空格以用于查询字符;<code>"PATH"</code>将空格编码为%20,<code>"WIKI"</code>将空格编码为“_”。


注意"WIKI"格式不是完全可以逆转的,因为空格和下划线都会编码为“_”。
注意"WIKI"格式不是完全可以逆转的,因为空格和下划线都会编码为“_”。
第2,851行: 第2,849行:
bit32 = require( 'bit32' )
bit32 = require( 'bit32' )


bit32库提供了无符号的32位整数的[[位运算|位运算]]。输入的整数会被截成整数(方法未指定)并用2<sup>32</sup>模除,这样值就是在0到2<sup>32</sup>-1之间的,返回的值也会是这个范围。
bit32库提供了无符号的32位整数的[[位运算]]。输入的整数会被截成整数(方法未指定)并用2<sup>32</sup>模除,这样值就是在0到2<sup>32</sup>-1之间的,返回的值也会是这个范围。


如果字节被编号(就像[[#bit32.extract|bit32.extract()]]中那样),那么0是最低位的字节(带有值2<sup>0</sup>的),31是最高位的(带有值2<sup>31</sup>的)。
如果字节被编号(就像[[#bit32.extract|bit32.extract()]]中那样),那么0是最低位的字节(带有值2<sup>0</sup>的),31是最高位的(带有值2<sup>31</sup>的)。
第2,917行: 第2,915行:
<code>bit32.arshift( n, disp )</code>
<code>bit32.arshift( n, disp )</code>


返回数<code>n</code>向右[[位操作#移位|移动]]<code>disp</code>位。这是一个[[算数移位|算数移位]]:如果<code>disp</code>是正的,那么插入的位将会与原始数字的31位相同。
返回数<code>n</code>向右[[位操作#移位|移动]]<code>disp</code>位。这是一个[[算数移位]]:如果<code>disp</code>是正的,那么插入的位将会与原始数字的31位相同。


注意超过31的移位将会导致0或4294967295。
注意超过31的移位将会导致0或4294967295。
第3,066行: 第3,064行:
== 与标准Lua的不同之处 ==
== 与标准Lua的不同之处 ==


===改变的函数===
=== 改变的函数 ===


以下函数被'''修改'''了:
以下函数被'''修改'''了:
第3,082行: 第3,080行:


以下包被'''几乎移除'''。只有列出来的函数可用。
以下包被'''几乎移除'''。只有列出来的函数可用。
; [https://www.lua.org/manual/5.1/manual.html#5.3 package.*]: 文件系统和对C库的取得被移除了。 可用的函数和表为:
; [https://www.lua.org/manual/5.1/manual.html#5.3 package.*]: 文件系统和对C库的取得被移除了。 可用的函数和表为:
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.loaded package.loaded]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.loaded package.loaded]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.preload package.preload]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.preload package.preload]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.loaders package.loaders]: 可获取本地文件系统或加载C库的加载器不存在。 添加了Module命名空间页面的加载器。
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.loaders package.loaders]: 可获取本地文件系统或加载C库的加载器不存在。 添加了Module命名空间页面的加载器。
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.seeall package.seeall()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-package.seeall package.seeall()]
; [https://www.lua.org/manual/5.1/manual.html#5.8 os.*]: 有些不安全的函数,例如os.execute(),因而不被允许。 可用的函数为:
; [https://www.lua.org/manual/5.1/manual.html#5.8 os.*]: 有些不安全的函数,例如os.execute(),因而不被允许。 可用的函数为:
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.clock os.clock()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.clock os.clock()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.date os.date()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.date os.date()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.difftime os.difftime()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.difftime os.difftime()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.time os.time()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-os.time os.time()]
; [https://www.lua.org/manual/5.1/manual.html#5.9 debug.*]: 大多数函数都是不安全的。 可用的函数为:
; [https://www.lua.org/manual/5.1/manual.html#5.9 debug.*]: 大多数函数都是不安全的。 可用的函数为:
:; [https://www.lua.org/manual/5.1/manual.html#pdf-debug.traceback debug.traceback()]
:; [https://www.lua.org/manual/5.1/manual.html#pdf-debug.traceback debug.traceback()]


第3,231行: 第3,229行:
Scribunto中包含的模块应该在上面的[[#Scribunto libraries|Scribunto库]]部分中包含文档。扩展库应该在其自己的扩展页面的子页面中包含文档,并从上方的[[#Extension library|扩展库]]章节中链接到该文档。
Scribunto中包含的模块应该在上面的[[#Scribunto libraries|Scribunto库]]部分中包含文档。扩展库应该在其自己的扩展页面的子页面中包含文档,并从上方的[[#Extension library|扩展库]]章节中链接到该文档。


==参见==
== 参见 ==
* [[Lua]]
* [[Lua]]


第3,244行: 第3,242行:
{{-}}
{{-}}
{{帮助页面}}
{{帮助页面}}

[[Category:帮助文档]]
[[Category:帮助文档]]