|
本帖最后由 zorsite 于 2017-5-13 12:25 编辑
3 h( ? O) m q V4 `* x: T6 l; h. e$ s3 e9 p: v' w; ]: z: b
releaseitem(obj flowitem [, num port ])
8 W/ L$ V0 p# `- ?释放指定的临时实体。
0 B q( I9 H/ P; w( P5 r% Ureleaseitem命令仅用于以下两种情况;9 T$ f/ |" I: y1 G" `9 G; }; ^! U
1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。- Z3 [& J& w- a# ^
2.临时实体在任意固定实体之中,并被holditem命令控制。 w. v' V1 L' {0 U. P8 G; ]0 Z
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
, g% o3 ^% y2 F: d5 m0 P8 \" l本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.* Q( Q( x) l2 T6 o% s6 n
% w1 ]1 T1 J5 {4 M; w8 Z/ H
命令示范:
8 [9 b, Y" O+ t% Z9 Xreleaseitem(item);
; W) k( M% j9 M8 {! N. ]- M( a0 I: |releaseitem(rank(current,1),1);0 d1 s2 r1 {1 |
releaseitem(last(current),getitemtype(item));1 e. c3 O8 A/ O- D
$ ]2 x; k% u+ y# A! C实际使用中发现,如果要释放的临时实体不存在,程序将报错。
5 x0 C; A) ~6 P- ]( }" H& s3 H$ P使用该命令时需要注意,确保第一参数flowitem指向正确。# {2 R" z6 Q# b6 E, g
) c8 Y0 j3 f! r2 V2 J# \. e; M
/ q+ @% O, [+ q0 j案例1:
3 h. v+ h: N: K( \/ [0 L使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
7 i0 \( b: I: D- N1.如果命令执行时货架中没有2个临时实体,程序将报错。' c8 b j: }5 B9 Y0 G
& V# t0 v+ s% C8 ?! F
2.假设货架存在2个临时实体。
8 g. _: x" B1 H# j4 y m0 ?+ u* h/ {; j7 _" b$ A; {5 `1 e/ H
& d( {* O: M& j! l, _5 T
(1)不使用运输工具。# m p( Z- `3 J5 V+ |
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?8 R4 D3 F3 I* u& l
第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);/ O" H. ^8 \. z6 `* K, _& \
# }9 n3 K4 t4 l' ^- N3 ^
, O& [ P) @6 ^3 N, P/ J(2)使用运输工具。) ~9 U: ~8 p6 p3 {: o) e2 P" q
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);: H" x7 |4 G; V6 M
8 v* _ o6 w8 P. Y3 l8 b5 O4 n
/ L8 O' g2 Y5 {+ F2 t5 f% K R3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。
5 R; [$ h7 m+ C% d% y3 i; m3 ?/ r7 N; Y/ n9 A, [
P# q S# r( o) j8 M案例2:
% }" T; ^6 H% i6 f假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。 Z2 r6 x1 \7 ]( M5 ~6 o5 w
下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
( a' W* {% |2 L# z, j- F; w3 }现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现? |
|