首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >行星:包括多次星斗部件时的奇怪行为

行星:包括多次星斗部件时的奇怪行为
EN

Stack Overflow用户
提问于 2020-08-03 10:02:15
回答 1查看 135关注 0票数 0

以这个小例子来说明我的问题。

common.puml

代码语言:javascript
运行
复制
@startuml common

!startsub COMMON

abstract Common {
    id : uuid
}

!endsub

@enduml

myclass1.puml

代码语言:javascript
运行
复制
@startuml myclass1

!includesub common.puml!COMMON

class MyClass1 extends Common {
    text: string
}

@enduml

myclass2.puml

代码语言:javascript
运行
复制
@startuml myclass1

!includesub common.puml!COMMON

class MyClass2 extends Common {
    value: int
}

@enduml

all.puml

代码语言:javascript
运行
复制
@startuml all

!include ./sub/common.puml
!include ./sub/myclass1.puml
!include ./sub/myclass2.puml

@enduml

在重新绘制all.puml图时,公共部分有一个奇怪的结果。属性呈现3次!

知道吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-24 03:53:46

这要么是个特征要么是个bug。包含文件,只需将文件中的代码放在另一个文件中。由于common.puml最终被包含了三次(一次在all中,一次在myclass1中,一次在myclass2中),所以您或多或少地使用了:

代码语言:javascript
运行
复制
abstract Common {
    id : uuid
}

abstract Common {
    id : uuid
}

abstract Common {
    id : uuid
}

它将产生

也许您可以通过定义一个变量来防止这种情况发生,例如,在不想重复的!$common = 1中定义一个变量,并在执行!includesub之前进行检查。

代码语言:javascript
运行
复制
...
!if (%not($common == 1))
!includesub common.puml!COMMON
!endif
...

(注意-我没有测试这个!)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63227378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档