解析器函数/设定对象(未完成)
阅读
2021-08-07更新
最新编辑:史诗级的肉卷丝
阅读:
更新日期:2021-08-07
最新编辑:史诗级的肉卷丝
这个页面还没有完成,或仍有细节有待商榷。
总述
设定对象及内联查询是wiki最重要的功能之一,可以使得用户快速进行大量内容的查询整理,并且占用的内存非常小不至于出现性能问题。无论是从省事还是保护服务器的角度来看,相关的函数是非常值得一名萌新编辑者学习的。
设定一个可查询的对象是进行内联查询的基础,是wiki中解析器函数的一部分。
除了文本注释以外,相关的函数主要包括#set、#declare和#subobject。
文本注释
文本注释(In-text annotation)是个功能较多的注释方式。其作用包括:
在本页面对象中,将某个值分配给某个属性。
例如,[[属性名::内容]]可以将“内容”赋予“属性名”。
如果不想将内容展示出来,需要在内容后使用管道符和半角空格来隐藏之。例如[[属性名::内容| ]]。
为某个链接设定一个替代文本。
例如,[[蕊儿|【蕊儿的页面】]]将显示为【蕊儿的页面】,链接至蕊儿。
创建一个超链接。
例如[[:解析器函数]]将显示为解析器函数。
这个冒号可以省略掉。但如果页面名称中包括双冒号“::”,则不可省略。如[[:C++::运算符号]]将显示为C++::运算符号。
#set
#set,也称为静默注释,其功能和文本注释的功能1基本一致,用于将某个值分配给某个属性。该函数没有输出,属性的内容不会被展示。
常规
{{#set:【属性1】=【内容1】 |【属性2】=【内容2】 |【属性3】=【内容3】 |... |【属性n】=【内容n】 }}
【属性】:属性的名字。 【内容】:该属性的值。
进阶
使用separator参数
|+sep=...
可以为内容的输入增加分隔符,允许为一个属性同时赋多个值。
示例:将“内容1”和“内容2”赋予“属性1”,下面四种方法都是可行的。
1、使用分隔符参数,{{#set:属性1=内容1,内容2|+sep=,}}
2、使用管道符分隔属性,{{#set:属性1=内容1|内容2}}
3、重复声明两次,{{#set:属性1=内容1|属性1=内容2}}
4、文本注释,[[内容1::属性1| ]][[内容1::属性2| ]]
使用template参数(未完成)
|template=...
可以为单个#ask函数设定某个模板的参数。
该参数提供下列的保留名参数(用于该模板),允许自定义链接与查询。
{{{property}}}
:属性的名称。{{{value}}}
:赋予该属性的值。{{{#}}}
:已经赋值的属性数。{{{last-element}}}
:该值是否为本属性的最后一个值。是则返回1,否则返回0。
#declare
这个函数用于将某个模板的参数设定为某个属性的值,局限性比#set要大得多。
常规
{{#declare:【属性1】=【参数1】 |【属性2】=【参数2】 |【属性3】=【参数3】 |... |【属性n】=【参数n】 }}
【属性】:属性的名字。 【参数】:将要作为该属性的值的模板参数。
该函数只能用于模板页面中。下面三串文字的效果是完全一致的。
{{#set: 名称={{{勇士名称}}} 星级={{{勇士星级}}} }}
{{#declare: 名称=勇士名称 星级=勇士星级 }}
[[名称::{{{勇士名称}}}| ]] [[星级::{{{勇士星级}}}| ]]
#subobject
#subobject用于设定一个子对象。子对象和页面对象是基本等价的。
常规
{{#subobject:【子对象名】 |【属性1】=【内容1】 |【属性2】=【内容2】 |【属性3】=【内容3】 |... |【属性n】=【内容n】 |@category=【分类】 }} 【子对象名】:用于具体定义这个类的名字。最终设定的类名为 页面名#子对象名 【属性】:属性的名字。 【内容】:该属性的值。 【分类】:为这个子对象设定的分类。