|
本帖最后由 zorsite 于 2017-5-13 12:25 编辑
' X K! A% \: N( p( g8 N" c Y/ J$ `6 _3 W; U( y
releaseitem(obj flowitem [, num port ])% H% s9 B! [! W* a7 |
释放指定的临时实体。6 ?$ _/ A( \+ }9 {( X
releaseitem命令仅用于以下两种情况;, h1 i$ i. h" _- g# a/ B( q. m
1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。 r+ y( G% e& ^% k
2.临时实体在任意固定实体之中,并被holditem命令控制。
_3 A+ m" A. `8 B) y第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。 S3 K; v- F- K6 x
本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.! m" j* r/ S! E1 ? `
$ S" \- ]. u9 f0 s+ c
命令示范:, _ r3 C2 a7 R8 s! ~" Y1 z
releaseitem(item);( e% l% [! N/ _1 v/ Y1 }: n* e- R+ j
releaseitem(rank(current,1),1);
8 [9 s- m* Z0 c8 y( u* E4 n0 \releaseitem(last(current),getitemtype(item));
6 z5 D) G6 K7 _4 i0 u* e; u* Z3 h! V0 L/ z* \ C, L2 }
实际使用中发现,如果要释放的临时实体不存在,程序将报错。
& E* q, ]5 i. D- t使用该命令时需要注意,确保第一参数flowitem指向正确。
% j7 n2 T3 Z. h4 {2 `0 |- W) H! `' b' @
! ^6 I" a4 ]! J, a: l& w
* m$ k% v* ?: P9 }2 B! P6 F案例1:
$ d- O: w+ G: W% ~9 |: T, Q使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
6 I* a3 e* E$ t+ V1.如果命令执行时货架中没有2个临时实体,程序将报错。# Q* ]' G# w4 H* {
. @3 s; d2 l+ o0 j2.假设货架存在2个临时实体。
- c7 L! b, z! a* N1 @
! E- m) @5 k! B A' z4 i8 H7 N; y6 I
(1)不使用运输工具。
. q+ R2 t* P/ \5 j第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
2 c- w8 j( ~, |4 |: y; l第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);
0 h6 U. W7 O. H3 {: W/ I
, [/ \8 ]" f5 {! v6 P' Z* E5 F
8 ~2 Y6 u* S8 F$ {, L" _(2)使用运输工具。
3 j0 t5 b8 [/ j- v- W* h5 n, X第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);% i) t/ g# v- P* S1 u. c
6 \7 Q8 n0 x' e1 S" \
0 C; l! F5 |* U' j- E
3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。
3 _3 q2 w$ \; n6 b( |( ~( c$ H, U5 o) ?. l( Q9 a
' y3 {) O8 c0 S5 N& B( p/ z案例2:- s/ E, b, `+ G: W0 Q* o
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
0 |$ a8 u2 L; s- N下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
8 R" T% V! J8 s* R现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现? |
|