|
本帖最后由 zorsite 于 2017-5-13 12:25 编辑
) Q R! B- ^1 H. j
7 b: C- ]+ o( l/ ` creleaseitem(obj flowitem [, num port ])6 r% d4 U" m, ]5 k- ]0 ?: r4 t
释放指定的临时实体。
/ X3 _! k5 k# ^releaseitem命令仅用于以下两种情况;
0 c* ~# V; s3 R* k y6 x$ T+ I1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。
: _! c2 j. `! @5 S# C* U; C! j2.临时实体在任意固定实体之中,并被holditem命令控制。
% j' K# Z6 e7 G$ W第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。! M0 J* w3 X8 I7 v! q& m
本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.
: \- s/ M3 m5 G
' Q% W- \4 z7 C+ {( \" f8 H命令示范:8 g O0 c4 F7 G
releaseitem(item);
% o! V/ D) M4 Lreleaseitem(rank(current,1),1);, A! _' f8 J5 G: t' z+ |) L
releaseitem(last(current),getitemtype(item));
% [' d `9 O1 z3 J! m1 H+ }% D
' x- W# r3 R3 |. z1 A- A& ^1 z; n实际使用中发现,如果要释放的临时实体不存在,程序将报错。( a# R; h. z, Y
使用该命令时需要注意,确保第一参数flowitem指向正确。
/ `. c; }1 l' e. D* b4 L
* l" i$ d# f0 ] {0 P& Y# U3 h) q! _) f. c
案例1:) t) v& z+ S6 G* [6 o
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。& |' ]4 R0 l6 F" o: c# @$ @& H( ?) e
1.如果命令执行时货架中没有2个临时实体,程序将报错。) z. B9 \7 C" X3 k" t5 O
! t3 b8 h6 `# ~( o# t2.假设货架存在2个临时实体。
& e5 B1 Y, ~: Y' v/ F) p
3 T1 _' ^' y; Y9 l3 J+ K
" A& w7 `. D9 f. o2 {2 b(1)不使用运输工具。
7 [. ?7 s" A% c7 }* ?( F1 U* K第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
5 g3 y* G n7 {1 i- l( o( y第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);$ [, c1 D1 X% x) m, K ]/ v
4 B8 L- U) x& @+ I" f: u" n! J) p. M8 F& t2 |% f3 B
(2)使用运输工具。6 C8 H$ d8 T/ b6 W3 o) P G
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);- F& b' I/ n# W) H" [
5 R# M' O1 _5 U( L/ j+ I* `6 A9 ~1 S
3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。9 w# X @% v4 M3 w& x4 p4 h
% e2 @- f4 W! F' U% l' U! ]
+ L( g+ ]0 K6 n* v$ n/ A案例2:% a+ p& ~* d% x+ {8 ]' H! e: q% I
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
! y5 A3 t" [. q/ z下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
8 ?0 n& ?( c& y# G2 S+ h现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现? |
|