Serialization yaml中的循环定义
我试图用yaml来表示一个有车站和线路的火车网络;一个最小的工作示例可能是3个站,线性连接,因此Serialization yaml中的循环定义,serialization,yaml,Serialization,Yaml,我试图用yaml来表示一个有车站和线路的火车网络;一个最小的工作示例可能是3个站,线性连接,因此ABC。我代表三个车站如下: --- stations: - A - B - C --- stations: - &S-A A - &S-B B - &S-C C lines: - &L-A2C A to C: from: *S-A to: *S-C - &L-C2
ABC
。我代表三个车站如下:
---
stations:
- A
- B
- C
---
stations:
- &S-A A
- &S-B B
- &S-C C
lines:
- &L-A2C A to C:
from: *S-A
to: *S-C
- &L-C2A C to A:
from: *S-C
to: *S-A
现在我想在网络上存储不同的线路,以及它们的起点/终点。为此,我添加了一个lines数组和一些锚点,如下所示:
---
stations:
- A
- B
- C
---
stations:
- &S-A A
- &S-B B
- &S-C C
lines:
- &L-A2C A to C:
from: *S-A
to: *S-C
- &L-C2A C to A:
from: *S-C
to: *S-A
这是我遇到的问题:我想在每一站的每一条线路上存储下一站。理想情况下是这样的:
---
stations:
- &S-A A:
next:
- *L-A2C: *S-B
- &S-B B:
next:
- *L-A2C: *S-C
- *L-C2A: *S-A
- &S-C C:
next:
- *L-C2A: *S-B
(行
数组保持不变)
但这失败了——至少在Python yaml库中是这样的,即yaml.composer.composer错误:找到了未定义的别名“L-A2C”
。我知道这是为什么,因为我还没有定义这条线。但我不能先定义线,因为它们取决于车站,但现在车站取决于线
有没有更好的方法来实现这一点?恭喜!您在大多数(如果不是全部的话)YAML实现中发现了一个问题。我最近也发现了这个限制,我正在研究如何解决(在Ruby世界中)。但这对你没有帮助。您需要做的是将“下一站”存储为一组单独的数据点
next-stops:
*S-A:
- *L-A2C: *S-B
*S-B:
- *L-A2C: *S-C
- *L-C2A: *S-A
*S-C:
- *L-C2A: *S-B
那有帮助吗?祝贺你!您在大多数(如果不是全部的话)YAML实现中发现了一个问题。我最近也发现了这个限制,我正在研究如何解决(在Ruby世界中)。但这对你没有帮助。您需要做的是将“下一站”存储为一组单独的数据点
next-stops:
*S-A:
- *L-A2C: *S-B
*S-B:
- *L-A2C: *S-C
- *L-C2A: *S-A
*S-C:
- *L-C2A: *S-B
那有用吗?谢谢!我想我必须这样做,尽管它并不完美。这是YAML库的缺点还是规范本身的缺点?谢谢!我想我必须这样做,尽管它并不完美。这是YAML库的缺点还是规范本身的缺点?