“MediaWiki:Uploadtext”与“Template:Array/doc”:页面之间的差异

H萌娘,万物皆可H的百科全书!
(页面间差异)
跳到导航 跳到搜索
imported>=海豚=
无编辑摘要
 
imported>=海豚=
(文本替换 - 替换“<br>”为“<br/>”)
 
第1行: 第1行:
<center>
 
<div class="common-box" style="background-color: #fdffe7; width: 90%; text-align:left;">
== 简介 ==
<center><big><big><big>''' 欢迎来到文件上传页面'''</big></big></big></center>
 
<center> 我们十分希望您能阅读以下指引之 后, 再上传文件 上传符合规范 文件会给文件管理带来极大 方便,谢谢!</center>
这是一个模拟数组形式生成结构化数据的模板,可以进行大量的存储、操作或传输数据,[[# 在Lua中获取或构造|与lua通信]]。本质上就是一次声明多个命名有关联的变量。
----
 
*<span style="background:lightgreen;color:green;">'''(✔)'''</span> ''' 请使用下面的表格上传文件 。'''要 查看或搜索以往上传 文件 请前往[[Special:FileList| 上传 文件 列表]];
因为未使用字符串处理,相对于使用字符串处理来分割参数的做法可以更安全地存储或传递数据。
*''' 文件的命名应尽量{{color|green| 有规律}}''' 可与文件 内容 有关, 也可 用pixiv ID等标识符 '''不 要使用{{color|red| 乱码}} 尤其是{{color|red| “脸滚键盘”}} 式的名称'''
 
*''' 上传音频文件请{{color|green| 以英文命名}}''' ,其他语言会导致文件在 分浏览器中无法播放。
== 用法 ==
*如果您想要''' 批量上传图片''', 请前往该条目''' 编辑源代码界面的图片拖拽栏''' 上传。
以下会将这种用多个变量模拟数组的形式称为“变量组”。
*''' 直接上传作品发布处的文件版本为最佳。''' (参见 {{ 萌百| 帮助:寻找原图| 帮助:寻找原图}} 
 
*<span style="font-weight:bold;background:pink;color:red;">(✘)</span> '''请勿上传{{color|red| 低分辨率}} 的图片,包括低质量的扫描图片、带有 印的图片等''';
作为变量组或变量组成员的变量名都以“@array-innerArrayIdentifier: ”为前缀,通常在使用时不需要关注这一点,这里只是提供一个说明。
----
 
*通过<strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg| 缩略图]]</nowiki></code></strong> 直接使用图片,更多方 {{ 萌百| 帮助:图像| 帮助:图像}}  {{ 萌百| 帮助: 外部图像| 帮助:外部图像}} 
=== 构造变量组 ===
*关于音乐文档的使用见 {{ 萌百| 帮助:MP3播放器| 帮助:MP3播放器}}  {{ 萌百| 帮助: 插入ogg音乐文件| 帮助:插入ogg音乐文件}} 
<pre>
*上传的图片需要一定时间经缓存刷新后才能显 ,请稍安勿躁。
{{array|new|name=变量组名,必须传入
*没有被任何条目 使用, 同时没有规范作品标注的文件会被'''定期删除'''
|数据1
<div style="text-align: right;">H萌娘管理组  敬上</div>
|数据2
</div>
|数据...
</center>{{#Widget:Nonotice}}
|{{array|in     <!-- 可以在模板内部使用in继续添加变量组,构建一个多维变量组 -->
  |数据...
  |{{array|in
   |数据...
  }}
}}
 
|r=若r为true,则返回name参数的值}}
</pre>
 
=== 取值与设置 ===
==== ''get'' ====
<pre>
{{array|get|变量组名|第一维序号|第二维序号|第三维序号|...}}
{{array|get|变量组名|count}}
{{array|get|变量组名|第一维序号|count}}
{{array|get|变量组名|第一维序号|...第n维序号|count}}
</pre>
 
get可以获取变量组成员的值,但若试图获取变量组索引,则会失败并报错。
 
==== ''set'' ====
<pre>
{{array|set|变量组名|第一维序号|第二维序号|...|val=要设置的值}}
</pre>
 
set可以设置变量组成员的值,但若试图对变量组索引赋值,则会失败并报错。
 
=== 其他方法 ===
 
==== ''push'' ====
<pre>
{{array|push|变量组名|第一维序号|第二维序号|...|val=要添加的值}}
</pre>
 
在变量组尾部追加一个值,其中定位要操作的变量组的方法和get一致。
 
若设置了<code>r=true</code> ,则返回追加后变量组的长度。
 
==== ''pop'' ====
<pre>
{{array|pop|变量组名|第一维序号|第二维序号|...}}
</pre>
 
删除变量组的最 一个值。若变量组长度为0 则不进行任何操作。
 
若设置了<code>r=true</code> 则返回被删除 那个值。
 
==== ''unshift'' ====
<pre>
{{array|unshift|变量组名|第一维序号|第二维序号|...|val=要添加 值}}
</pre>
 
在变量组头部追加一个值。
 
若设置了<code>r=true</code> ,则返回追加后变量组的长度。
 
==== ''shift'' ====
<pre>
{{array|shift|变量组名|第一维序号|第二维序号|...}}
</pre>
 
删除变量组的第一个值。若变量组长度为0,则不进行任何操作。
 
若设置了<code>r=true</code>,则返回被删除的那个值。
 
==== ''getIndex'' ====
<pre>
{{array|getIndex|变量组名|第一维序号|第二维序号|...}}
</pre>
 
获取变量组的索引值。也可以获取到普通值,但因没有提示,所以并不推荐使用。
 
==== ''ifIndex'' ====
<pre>
{{array|ifIndex|变量组索引}}
</pre>
 
判断一个字符串是否为变量组索引,是返回1,否返回空
 
==== ''splice'' ====
<pre>
{{array|splice
|index= 变量组索引
|start= 操作起始位置,默认为1,不能超过要操作的变量组的长度
|howmany=  删除 成员数量 默认为1
| 添加值...
}}
</pre>
 
操作变量组 值,利用这个方法可以进行删除、添加、替换等操作。你可以把这个方法看作是JavaScript中数组的splice方法。
 
若设置了<code>r=true</code>,则返回新 变量组长度。
 
==== ''print'' ====
<pre>
{{array|print| 变量组名| 第一维序号|第二维序号|...}}
</pre>
 
打印变量组 用于检查变量组当前的 内容
 
=== 简写 ===
==== 构造时简写 ====
构造时 也可 以省略“new”。这时 变量组的第一个值''' 一定 能等于上面列出的方法中的任何一个(包括new)''',否则构造时将出现错误。
 
=== 其他 ===
 
所有的参数名“name”也可以写成“id”。
 
=== 在Lua中获取或构造 ===
 
请参考:[[Module:var-array]]
 
== 示例 ==
=== 示例{{n|init}} ===
<pre>
{{array|new|name=arr
|ab
|cd
|ef
}}
{{array|get|arr|2}}
</pre>
''' 结果''' :{{array|new|name=arr
|ab
|cd
|ef
}}
{{array|get|arr|2}}
 
=== 示例{{n}} ===
<pre>
{{array|id=student
|{{array|in|shinobu|大宫忍|鬼畜木芥子}}
|{{array|in|alice|爱丽丝}}
}}
{{array|get|student|1|1}}、{{array|get|student|2|2}}
 
student1数据总数:{{array|get|student|1|count}}
 
尝试对内部变量组1进行取值:{{array|get|student|1}}
</pre>
''' 结果''':{{array|id=student
|{{array|in|shinobu|大宫忍|鬼畜木芥子}}
|{{array|in|alice|爱丽丝}}
}}
{{array|get|student|1|1}}、{{array|get|student|2|2}}
 
student1数据总数:{{array|get|student|1|count}}
 
尝试对内 变量组1进行取值:{{array|get|student|1}}
=== 示例{{n}} ===
 
<pre>
{{array|id=student
|{{array|in|shinobu|大宫忍|
  {{array|in
  |短发|大和抚子
  }}
}}
}}
{{array|get|student|1|3|2}}
</pre>
''' 结果''' :{{array|id=student
|{{array|in|shinobu|大宫忍|
  {{array|in
  |短发|大和抚子
  }}
}}
}}
{{array|get|student|1|3|2}}
 
=== 示例{{n}} ===
<pre>
{{array|id=test
|5,日 牧师
|4,火,牧师
|3,火,剑士
|3,水,法师
}}
{{array|shift|test}}
{{array|get|test|1}}
</pre>
''' 结果''' :{{array|id=test
|5,日,牧师
|4,火,牧师
|3,火,剑士
|3,水,法师
}}{{array|shift|test}}
{{array|get|test|1}}
 
 
=== 示例{{n}} ===
<pre>
{{array|id=test
|111
|222
|333
|444
|555
}}
 
{{array|splice
|index= {{array|getIndex|test}}
|start=2
|howmany= 3
|aaa|bbb
}}
 
{{array|print|test}}
</pre>
{{array|id=test
|111
|222
|333
|444
|555
}}
{{array|splice
|index= {{array|getIndex|test}}
|start=2
|howmany= 3
|aaa|bbb
}}
''' 结果'''
{{array|print|test}}
 
<!--
=== 示例{{n}} ===
<pre>
{{array|id=角色信息表
|{{array|in|5|日|牧师}}
|{{array|in|4|火|牧师}}
|{{array|in|3|火|剑士}}
|{{array|in|3|水|法师}}
}}
{{array|unshiftSome|id={{array|getIndex|角色信息表}}
|{{array|in|5|日|法师}}
|{{array|in|5|风|炼金术师}}
}}
{{array|get|角色信息表|1|3}}
 
{{array|get|角色信息表|2|3}}
</pre>
{{array|id=角色信息表
|{{array|in|5|日|牧师}}
|{{array|in|4|火|牧师}}
|{{array|in|3|火|剑士}}
|{{array|in|3|水|法师}}
}}
{{array|unshiftSome|id={{array|getIndex|角色信息表}}
|{{array|in|5|日|法师}}
|{{array|in|5|风|炼金术师}}
}}
{{array|get|角色信息表|1|3}}
 
{{array|get|角色信息表|2|3}}
 
-->
=== 示例{{n}} ===
 
<pre>
{{array|id=角色信息表
|{{array|in|5|日|牧师}}
|{{array|in|4|火|牧师}}
|{{array|in|3| | 剑士}}
|{{array|in|3| |法师}}
}}<!--
-->{{loop|times=1|{{array|get|角色信息表|count}}|do=<nowiki><nowiki></nowiki>
稀有度:{{array|get|角色信息表|{{#var:times}}|1}}<br/>
职业:{{array|get|角色信息表|{{#var:times}}|2}}<br/>
属性:{{array|get|角色信息表|{{#var:times}}|3}}<br/>
<br/>
<nowiki><nowiki></nowiki>
}}
 
打印变量组:{{array|print|角色信息表}}
</pre>
{{array|id=角色信息表
|{{array|in|5|日|牧师}}
|{{array|in|4|火|牧师}}
|{{array|in|3|火|剑士}}
|{{array|in|3|水| 师}}
}}<!--
-->{{loop|times=1|{{array|get|角色信息表|count}}|do=<nowiki>
  稀有度:{{array|get|角色信息表|{{#var:times}}|1}}<br/>
  职业:{{array|get|角色信息表|{{#var:times}}|2}}<br/>
  属性:{{array|get|角色信息表|{{#var:times}}|3}}<br/>
<br/>
</nowiki>
}}
 
  打印变量组:{{array|print|角色信息表}}
===  例{{n}} ===
 
使用{{tl|split}}将每个变量的值分割成3个数据 输出
<pre>
{{array|new|name= 角色信息表
|5,日,牧师
|4,火,牧师
|3,火,剑士
|3,水,法师
}}<!--
-->{{#loop:times|1|{{array|get|角色信息表.count}}
|{{#vardefine:info|{{array|get|角色信息表|{{#var:times}}}}}}
{{split|{{#var:info}}|,|charaInfo}}
稀有度:{{#var:charaInfo1}}<br/>
属性:{{#var:charaInfo2}}<br/>
职业:{{#var:charaInfo3}}<br/>
<br/>
}}
</pre>
{{array|new|name=角色信息表
|5,日,牧师
|4,火,牧师
|3,火,剑士
|3,水,法师
}}<!--
-->{{#loop:times|1|{{array|get|角色信息表|count}}
|{{#vardefine:info|{{array|get|角色信息表|{{#var:times}}}}}}
{{split|{{#var:info}}|,|charaInfo}}
稀有度:{{#var:charaInfo1}}<br/>
属性:{{#var:charaInfo2}}<br/>
职业:{{#var:charaInfo3}}<br/>
<br/>
}}
 
<includeonly>[[分类:辅助模板]]<includeonly><noinclude>[[分类:模板说明文件]]</noinclude>

2021年4月18日 (日) 19:20的最新版本

简介[编辑源代码]

这是一个模拟数组形式生成结构化数据的模板,可以进行大量的存储、操作或传输数据,与lua通信。本质上就是一次声明多个命名有关联的变量。

因为未使用字符串处理,相对于使用字符串处理来分割参数的做法可以更安全地存储或传递数据。

用法[编辑源代码]

以下会将这种用多个变量模拟数组的形式称为“变量组”。

作为变量组或变量组成员的变量名都以“@array-innerArrayIdentifier:”为前缀,通常在使用时不需要关注这一点,这里只是提供一个说明。

构造变量组[编辑源代码]

{{array|new|name=变量组名,必须传入
|数据1
|数据2
|数据...
|{{array|in         <!-- 可以在模板内部使用in继续添加变量组,构建一个多维变量组 -->
  |数据...
  |{{array|in
    |数据...
   }}
 }}

|r=若r为true,则返回name参数的值}}

取值与设置[编辑源代码]

get[编辑源代码]

{{array|get|变量组名|第一维序号|第二维序号|第三维序号|...}}
{{array|get|变量组名|count}}
{{array|get|变量组名|第一维序号|count}}
{{array|get|变量组名|第一维序号|...第n维序号|count}}

get可以获取变量组成员的值,但若试图获取变量组索引,则会失败并报错。

set[编辑源代码]

{{array|set|变量组名|第一维序号|第二维序号|...|val=要设置的值}}

set可以设置变量组成员的值,但若试图对变量组索引赋值,则会失败并报错。

其他方法[编辑源代码]

push[编辑源代码]

{{array|push|变量组名|第一维序号|第二维序号|...|val=要添加的值}}

在变量组尾部追加一个值,其中定位要操作的变量组的方法和get一致。

若设置了r=true,则返回追加后变量组的长度。

pop[编辑源代码]

{{array|pop|变量组名|第一维序号|第二维序号|...}}

删除变量组的最后一个值。若变量组长度为0,则不进行任何操作。

若设置了r=true,则返回被删除的那个值。

unshift[编辑源代码]

{{array|unshift|变量组名|第一维序号|第二维序号|...|val=要添加的值}}

在变量组头部追加一个值。

若设置了r=true,则返回追加后变量组的长度。

shift[编辑源代码]

{{array|shift|变量组名|第一维序号|第二维序号|...}}

删除变量组的第一个值。若变量组长度为0,则不进行任何操作。

若设置了r=true,则返回被删除的那个值。

getIndex[编辑源代码]

{{array|getIndex|变量组名|第一维序号|第二维序号|...}}

获取变量组的索引值。也可以获取到普通值,但因没有提示,所以并不推荐使用。

ifIndex[编辑源代码]

{{array|ifIndex|变量组索引}}

判断一个字符串是否为变量组索引,是返回1,否返回空。

splice[编辑源代码]

{{array|splice
|index= 变量组索引
|start= 操作起始位置,默认为1,不能超过要操作的变量组的长度
|howmany= 要删除的成员数量,默认为1
|添加值...
}}

操作变量组的值,利用这个方法可以进行删除、添加、替换等操作。你可以把这个方法看作是JavaScript中数组的splice方法。

若设置了r=true,则返回新的变量组长度。

print[编辑源代码]

{{array|print|变量组名|第一维序号|第二维序号|...}}

打印变量组,用于检查变量组当前的内容。

简写[编辑源代码]

构造时简写[编辑源代码]

构造时也可以省略“new”。这时,变量组的第一个值一定不能等于上面列出的方法中的任何一个(包括new),否则构造时将出现错误。

其他[编辑源代码]

所有的参数名“name”也可以写成“id”。

在Lua中获取或构造[编辑源代码]

请参考:Module:var-array

示例[编辑源代码]

示例1[编辑源代码]

{{array|new|name=arr
|ab
|cd
|ef
}}
{{array|get|arr|2}}

结果: cd

示例2[编辑源代码]

{{array|id=student
|{{array|in|shinobu|大宫忍|鬼畜木芥子}}
|{{array|in|alice|爱丽丝}}
}}
{{array|get|student|1|1}}、{{array|get|student|2|2}}

student1数据总数:{{array|get|student|1|count}}

尝试对内部变量组1进行取值:{{array|get|student|1}}

结果: shinobu、爱丽丝

student1数据总数:3

尝试对内部变量组1进行取值:Lua错误:不能获取变量组的索引值。

示例3[编辑源代码]

{{array|id=student
|{{array|in|shinobu|大宫忍|
  {{array|in
  |短发|大和抚子
  }}
 }}
}}
{{array|get|student|1|3|2}}

结果: 大和抚子

示例4[编辑源代码]

{{array|id=test
|5,日,牧师
|4,火,牧师
|3,火,剑士
|3,水,法师
}}
{{array|shift|test}}
{{array|get|test|1}}

结果: 4,火,牧师


示例5[编辑源代码]

{{array|id=test
|111
|222
|333
|444
|555
}}

{{array|splice
|index= {{array|getIndex|test}}
|start=2
|howmany= 3
|aaa|bbb
}}

{{array|print|test}}


结果

table#1 {
    "111",
    "aaa",
    "bbb",
    "555",
}

示例6[编辑源代码]

{{array|id=角色信息表
|{{array|in|5|日|牧师}}
|{{array|in|4|火|牧师}}
|{{array|in|3|火|剑士}}
|{{array|in|3|水|法师}}
}}<!--
-->{{loop|times=1|{{array|get|角色信息表|count}}|do=<nowiki>
稀有度:{{array|get|角色信息表|{{#var:times}}|1}}<br/>
职业:{{array|get|角色信息表|{{#var:times}}|2}}<br/>
属性:{{array|get|角色信息表|{{#var:times}}|3}}<br/>
<br/>
<nowiki>
}}

打印变量组:{{array|print|角色信息表}}

稀有度:5
职业:日
属性:牧师

稀有度:4
职业:火
属性:牧师

稀有度:3
职业:火
属性:剑士

稀有度:3
职业:水
属性:法师

打印变量组:

table#1 {
    table#2 {
        "5",
        "日",
        "牧师",
    },
    table#3 {
        "4",
        "火",
        "牧师",
    },
    table#4 {
        "3",
        "火",
        "剑士",
    },
    table#5 {
        "3",
        "水",
        "法师",
    },
}

示例7[编辑源代码]

使用{{split}}将每个变量的值分割成3个数据,输出。

{{array|new|name=角色信息表
|5,日,牧师
|4,火,牧师
|3,火,剑士
|3,水,法师
}}<!--
-->{{#loop:times|1|{{array|get|角色信息表.count}}
|{{#vardefine:info|{{array|get|角色信息表|{{#var:times}}}}}}
{{split|{{#var:info}}|,|charaInfo}}
稀有度:{{#var:charaInfo1}}<br/>
属性:{{#var:charaInfo2}}<br/>
职业:{{#var:charaInfo3}}<br/>
<br/>
}}

稀有度:5
属性:日
职业:牧师

稀有度:4
属性:火
职业:牧师

稀有度:3
属性:火
职业:剑士

稀有度:3
属性:水
职业:法师