铃心自定义——C7:含参关键词&参数综合处理

通过含参关键词我们可以提取出更多有用的信息——这样我们就可以玩出更多的花样了。

编辑于2020.2.8 转载请注明作者

什么叫做参数

参数,顾名思义,就是可以参考的数

参数,也叫参变量,是一个变量。我们在研究当前问题的时候,关心某几个变量的变化以及它们之间的相互关系,其中有一个或一些叫自变量,另一个或另一些叫因变量。如果我们引入一个或一些另外的变量来描述自变量与因变量的变化,引入的变量本来并不是当前问题必须研究的变量,我们把这样的变量叫做参变量或参数。
英文名:Parameter。

来源:百度百科

简单说,在我们研究的范围内,可以将参数完全视为变量。

怎么向回复中传入参数

问的好,首先我们要明确,我们的参数是从哪里传过来的。

是的,因为铃心的结构是一个极其标准的“输入-输出”结构,因此最初的参数只有可能是从关键词处传入进来的——此时,我们就必须使用前缀匹配或者是正则匹配的方式来从输入中取出我们所需要的参数。

正则匹配的绝对性优势

首先我们来看看比较对象——前缀匹配。
前缀匹配顾名思义,就是前面的只要满足了条件,无论后面是什么,我都不管。
这里我们要提到一个概念,就是铃心变量的【内容】。

在前缀匹配中,【内容】(子关键词)指的就是前缀屁股后面的任意字符。

我们可以看到,这样传入参数的缺点在于——一次只能传入一个参数,而且输入进去的东西可能五花八门。可能你本来想要数字,结果人家传了一堆中文进去,处理都处理不了。

而正则表达式就不一样,我们可以用正则来输入多个参数,并且给予明确的参数类型限制。

在上文的例子中,我们看到,通过括号标识出来的正则表达式,会将内部匹配到的内容储存在【内容x】的内存空间中来供给我们调用。(其中x为第x个子关键词)通过这种方式我们就可以从关键词中提取多个参数来使用了!

参数的综合处理

该部分有一定难度,并且实际使用中效果并不是很大,因此可以选择性的学习。

如果,正则表达式过于复杂,或者说是根本写不出来正则呢?

这么说大家可能有些迷惑——怎么,什么情况下还能写不出来正则表达式呢?我Yorunina第一个不服!

好,我就举一个最近我在研究的例子吧——铃心化Dice的基础骰点功能。

熟悉骰子机器人的都应该知道,.r是骰点的功能,但是实际上.r是省略了几个参数,全文应该是.r1d100。在这个情况下,1这个参数是可有可无的,100也是可有可无的,d也是可有可无的。

在没有明显标识且出现多个可有可无的量的时候,正则表达式的书写就开始变得困难。就算能够写出来,调用它的【内容】会因为其属于位置的不确定性而变得困难。刚才可能数字15是【内容3】,等会儿有可能会因为省略了前面的某个参数而变成了【内容2】。

经验の传授

那这种情况怎么办呢?实际的骰点表达式情况比上文提到的还要复杂的多——这下子穷途末路了?

No,no,no.这个时候聪明的我们就应该想办法了,我们想到的最好的办法就是利用铃心的函数来帮助预处理,从复杂的【内容】中得到我们需要的参数。

我们可以看到,当我们仅仅通过一个正则表达式处理不了的问题,我们可以将其简化成多个表达式来共同处理。
一个表达式想要准确的分离出三个乃至五个变量是非常困难的,但是通过这种综合性处理——即多步处理的方法,可以轻松的化解这个难题,并且减少实际运行中混淆的可能。

顺带一提,其实你不会用正则也是可以一次性传入多个参数的,只需要用到上文综合处理的技巧再加上铃心自备的变量——未来就在你的眼前。

后记

参数的综合处理其实一直都是个难题,到现在也是。
因为用户们输入的东西总是千奇百怪——甚至有的东西你根本都理解不了。
所以说,传统的正则其实只解决了怎么输入的参数的问题,而并没有考虑后续处理的难易程度。但是综合性处理可以有效地对传入的参数进行整理和处理,简化了后文的处理难度。

制作不易,请多多评论指教,拜托了!

咕咕咕咕咕

Yorunina

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐