复杂路径
创建于 2023-04-23 / 最近更新于 2023-04-25 /
1865
字体:
[默认]
[大]
[更大]
之前我们学习了路径的概念,但只是简单的时候,事实上路径的使用方法还能更灵活,也更复杂。
我们看下面这个例子:
#对象 = {
#数组 : 【1, 2, 3】,
@方法 : @【#某】{
返回 @转字符串、#某
}
}
首先我们来看一下2级以上的路径
#甲 = 1
长路径
假设我们现在有这样的一个变量#甲,并且希望把它作为位置序号去访问#对象#数组中对应的元素,那么还是和之前一样,我们继续组合路径就能实现:
#对象#数组#甲 ;组合后的长路径,这里会访问到 2
同样的,长路径也可以用于设值。
注意,路径用于对集合中的元素赋值时不受=和:的限制,无论使用那种方式,都会在找到的集合内进行赋值。
路径内表达式求解
接下来,我们升级一下复杂度,假设需要通过关于#甲的表达式进行计算后的结果作为位置序号来访问元素。例如,我们希望访问的序号应该是#甲 * 2,那么这时应该如何实现呢:
#对象#数组#【#甲 * 2】
这里我们发现最后一个用于分割路径的#后处理了一个【】,里面是关于#甲的表达式,这种方式我们称为是路径内对表达式求解。
这里通过路径找到#对象#数组后,会先计算【#甲 * 2】内的表达式,得到的值是2,然后作为位置序号访问元素。所以这里访问的是序号为2的元素,得到的值是 3 。
路径内函数调用
前面的文档中我们提过,对象内可以定义函数(方法),那么我们也可以通过路径来调用对象内的函数。例如上面我们定义了#对象@方法,它会将传入的任意值转换为字符串,例如:
#对象@方法【123】 ;这里会返回转换后的字符串 “123”
那么如果我们还需要通过序号访问返回的字符串中的某个字符,还可以对路径进行扩展,例如
#对象@方法【123】#1 ;首先转换后得到字符串 “123”,再访问序号为1的字符,返回“2”
注意,路径内函数调用如果函数不在路径的最后,那么不能使用、的方式调用。
通过对路径的组合,我们能够实现对复杂数据结构的操作。
0 人点赞过