青语言使用文档

复杂路径

创建于 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 人点赞过