数据类型声明
Data Type declaration
我想声明一个名为 Machine 的数组,它包含 4 个元素。每个元素也是一个包含 2 个元素的数组,其中,第一个元素的值是从枚举中获得的:
pressionLevel={below, normal, over}
第二个具有枚举值:
action={start, pause, stop, restart}
我的第二个问题是如何访问这个数组的元素?
VAR
pressionLevel={below, normal, over};
action={start, pause, stop, restart};
machine= array 1..4 -- how to continue this declaration?? --
AFAIK,不直接支持数组的数组。
您可以为元素模块的每个实例创建不同的名称(请参阅 machine01
),或者废弃元素模块并将其内容推送到机器模块中(请参阅 machine02
)。
例如:
MODULE element()
VAR
pressionLevel : { BELOW, NORMAL, OVER };
action : { START, PAUSE, STOP, RESTART };
MODULE machine01()
VAR
el1 : element();
el2 : element();
el3 : element();
el4 : element();
MODULE machine02()
VAR
pressionLevel : array 1..4 of { BELOW, NORMAL, OVER };
action : array 1..4 of { START, PAUSE, STOP, RESTART };
MODULE main()
VAR
m1 : machine01();
m2 : machine02();
可以使用常量索引访问数组的元素,例如:
next(precisionLevel[0]) := BELOW
使用 constraint-style 建模 时,很容易对具有意外后果的事物进行建模,或者为非常小的数组编写一些易于管理的约束,但是,由于某些原因,它很快就会因更大的问题而爆炸。所以我建议只使用 assignment-style 建模 ,或者扩展约束,例如
precisionLevel[i] = BELOW => ... some consequence ...
如下
((i = 0 & precisionLevel[0] = BELOW) => ... some consequence ...)
&
((i = 1 & precisionLevel[1] = BELOW) => ... some consequence ...)
&
...
其中 i
是一个变量,作为数组 precisionLevel
的索引,约束扩展到 i
.
的整个域
我想声明一个名为 Machine 的数组,它包含 4 个元素。每个元素也是一个包含 2 个元素的数组,其中,第一个元素的值是从枚举中获得的:
pressionLevel={below, normal, over}
第二个具有枚举值:
action={start, pause, stop, restart}
我的第二个问题是如何访问这个数组的元素?
VAR
pressionLevel={below, normal, over};
action={start, pause, stop, restart};
machine= array 1..4 -- how to continue this declaration?? --
AFAIK,不直接支持数组的数组。
您可以为元素模块的每个实例创建不同的名称(请参阅 machine01
),或者废弃元素模块并将其内容推送到机器模块中(请参阅 machine02
)。
例如:
MODULE element()
VAR
pressionLevel : { BELOW, NORMAL, OVER };
action : { START, PAUSE, STOP, RESTART };
MODULE machine01()
VAR
el1 : element();
el2 : element();
el3 : element();
el4 : element();
MODULE machine02()
VAR
pressionLevel : array 1..4 of { BELOW, NORMAL, OVER };
action : array 1..4 of { START, PAUSE, STOP, RESTART };
MODULE main()
VAR
m1 : machine01();
m2 : machine02();
可以使用常量索引访问数组的元素,例如:
next(precisionLevel[0]) := BELOW
使用 constraint-style 建模 时,很容易对具有意外后果的事物进行建模,或者为非常小的数组编写一些易于管理的约束,但是,由于某些原因,它很快就会因更大的问题而爆炸。所以我建议只使用 assignment-style 建模 ,或者扩展约束,例如
precisionLevel[i] = BELOW => ... some consequence ...
如下
((i = 0 & precisionLevel[0] = BELOW) => ... some consequence ...)
&
((i = 1 & precisionLevel[1] = BELOW) => ... some consequence ...)
&
...
其中 i
是一个变量,作为数组 precisionLevel
的索引,约束扩展到 i
.