用户:
𝙲ℴ𝗌𝔦𝒹ₑ𝑟查看:0 回复:5 评论:0 创建时间:2023-04-30T14:52:14
你有没有遇到过这种情况:
你的函数需要借助额外变量或者列表才能操作
【例子】
函数返回一个东西,在操作的时候,需要一个列表,
所以你创建了一个列表,并在列表上操作
完成后清除列表以便下一次使用
完成函数后,你运行函数,发现是成功的
(函数list,参数abcde,把5个参数放进一个列表)

listOprate是我们制作列表的操作区,把参数放进列表
然后把输出列表的值

很容易就实现了
但是这里面有一个很大的问题:
这个列表是公共的!任何东西都可以干扰这个列表
“那我可以不动这个列表啊”
不不不,你应该注意的是函数调用与另一个调用期间
它所操作的列表是否会互相干扰
举个例子:一个函数必须调用并等待另一个函数执行完,
这个函数在调用它的函数执行期间,且都使用同一个列表
那么可能会出现矛盾
以上的原因是:
里面的函数先执行然后返回列表给外面的函数时,
外面的列表后调用并清空了列表,导致里面的函数返回了空列表(但实际仍然占一项)
如何避免呢?
“把操作区独立就行了呗”
说得好!但是用哪种方法?
“角色变量加克隆体”
az,太浪费资源了吧
多了还卡
而且这是函数,如果使用角色变量那就只能在角色内部使用
....
哦对了,列表
列表可以添加删除东西,内部还可以有列表
那么....

这里我们定义了listOprate每一个项都为一个独立的操作区
访问使用一个uselistID找到对应编号的操作区
完成操作后删除操作区
这样就完美解决问题了............吗
没错如您所见,这里有重复查找步骤
冗余一向不是我的风格
但是我又不能使用额外的变量储存这个位置
那怎么办呢?
<tip>如果您看过我往期启发教程
你会知道下面有什么
你注意到了吗,参数积木都属于圆形积木
而且图中列表积木右边是个圆框:

那这意味着,我可不可以把操作列表指向参数?
结论是可行的,
好玩了,请看下面

这次我们把所有积木放到list_里
把所有参数给它,让它来处理列表
list只管返回东西
你知道为什么我加了一个参数吗?
听我讲:所有函数的参数都可以是一个局域变量(只能在函数内使用,并且不会喵扰)
我定义了一个操作区,就是『result』(最后面的)
默认输入是一个空列表,
这样子可以极大地优化我们的操作,节省资源
(请脑补所有“?”和返回处都是result,因为我手机拖不动参数)

这里我们在操作区result执行操作
“诶,我记得参数明明是调用了就无法改了,这怎么可以??”
没错kitten大多数类型的参数没有办法改,但是除了列表(因为参数积木可以填入列表积木)
总结:
参数可以被当做列表积木的操作对象操作
参数是可以更改的
参数是独立的,不会受到外界干扰