|
本帖最后由 zorsite 于 2017-5-13 12:25 编辑 . Z2 _, |" G/ O4 i
+ O1 r/ x- \+ e2 S% ^9 P$ `
releaseitem(obj flowitem [, num port ]). T5 S- E- ^) j! N& w4 J
释放指定的临时实体。
8 L* g: g4 f! ]3 Zreleaseitem命令仅用于以下两种情况;
) c# E" O6 f- b5 @1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。# H8 q. k2 X3 F5 h% i& I5 i
2.临时实体在任意固定实体之中,并被holditem命令控制。# C+ X2 u; J/ b% H) E" _2 C5 G
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
- ^7 {1 {8 f- m本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.
. P7 h, l/ _9 U4 @! f/ b, M7 S1 ~) Z' V9 c; ?* w( x% a7 R
命令示范:' L7 ?& I8 Y5 m: n* ]6 a
releaseitem(item);
4 h1 w/ B" S0 U% Freleaseitem(rank(current,1),1);7 g( c. o9 ?+ r
releaseitem(last(current),getitemtype(item));' y" b; m$ K( o- Y5 |, ^
V+ T) K: g; e实际使用中发现,如果要释放的临时实体不存在,程序将报错。5 s, y9 A8 T& v
使用该命令时需要注意,确保第一参数flowitem指向正确。6 ]4 c u4 g$ j* `1 G) y* n j
6 d1 O7 Q- A) A& |
7 a4 Q, s3 C. U' u& @
案例1:) x5 [: `5 B4 E+ ^
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。3 e2 X' ?7 S# Q6 l% g5 Z6 [
1.如果命令执行时货架中没有2个临时实体,程序将报错。
3 ?4 @7 v8 D0 r$ c3 y' p. V5 k4 m: O& |. P: w( Q
2.假设货架存在2个临时实体。
! ?3 r! K0 |; C4 @! u9 g
" y( X$ `+ x& n- M8 J& B
" o9 [( o8 @7 K" h( q(1)不使用运输工具。6 x+ s! t6 }" C% K N
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
( {! _+ d! h. f0 w9 a第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);
* O4 q" `4 u9 R9 n( s6 Y% W
3 b+ Q( `+ u2 J" |) T1 E" T
* _4 a& [- h2 T2 u8 {) k0 r. i, A(2)使用运输工具。, m7 }* j9 }( q* ?2 ~( ]$ z: ]6 K' s
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);% W. A' J7 h1 S: N u& K [' k- V
1 r; o3 m7 l7 |" [0 `" d9 L
9 H* b- b% Y; `) n# {& c3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。3 c& ^1 c0 x$ ]3 x$ E4 Z0 {
0 Z H5 [% }, K( o
6 ?, T; N- n! s; x. e/ F) w
案例2:
3 y6 i0 G1 w* j: v, t! |假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
' } K# x4 N5 u" _2 x U7 g* N5 F' F下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。 D0 {) y! h& l0 O: T$ }3 B
现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现? |
|