我正在尝试用yaml代表一个有车站和线路的火车网络;最小工作示例可能是3个站点,线性连接,因此A<->B<->C
。我代表三个站如下:
---
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
(lines
数组保持不变)
但这失败了 - 至少在Python yaml库中说yaml.composer.ComposerError: found undefined alias 'L-A2C'
。我知道为什么会这样 - 因为我还没有定义这条线。但我不能先定义线路,因为它们依赖于电台,但现在电台依赖于线路。
有没有更好的方法来实现这个?
答案 0 :(得分:1)
Congradulations!您在大多数(如果不是全部)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
这有帮助吗?