|
本帖最后由 zorsite 于 2017-5-13 12:25 编辑 & f7 N/ C" C- w
, ^2 ~6 ~3 P6 r9 e1 j' }releaseitem(obj flowitem [, num port ])
: @8 V8 `7 o* G. H$ D1 P+ a! P释放指定的临时实体。
6 ?% F) i2 s2 l: e3 {6 C0 [releaseitem命令仅用于以下两种情况;5 i3 q# Y5 \' e. g
1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。
: i- m4 E1 O' m6 b- o2.临时实体在任意固定实体之中,并被holditem命令控制。8 M6 a1 h1 U5 G. a
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
5 s* O5 n4 r' ^8 f本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.# A$ s$ l' u5 B& ]
& }2 d: j5 [+ E命令示范:
/ B# Q: \+ i8 k- k' Yreleaseitem(item);) `/ S: F' Y0 j
releaseitem(rank(current,1),1);7 k4 M9 d' _% w- u9 c, `7 M
releaseitem(last(current),getitemtype(item));
6 |" ~1 D) b: d4 o
7 H; f, S# l( x实际使用中发现,如果要释放的临时实体不存在,程序将报错。
) B+ g) w- _ r8 x5 z6 O- Q5 W使用该命令时需要注意,确保第一参数flowitem指向正确。
) s( \' s- ?* Y0 [/ w5 M2 M! E( Q7 A$ k$ d, r5 ]4 o% y
, }& y p2 @1 Y* Q
案例1:0 b, X7 m2 C9 _* i
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。! v6 f4 r4 n* I3 u6 z
1.如果命令执行时货架中没有2个临时实体,程序将报错。4 w. n1 z/ P3 V
* t) e* B+ |5 o5 Z4 q% X4 w
2.假设货架存在2个临时实体。$ J% L% F6 V' c* I4 T9 Y( x2 S
$ ^) n& J7 j, a0 g9 o$ P# ~. {
$ `% }- s* @8 g2 ?4 q) \
(1)不使用运输工具。
5 C8 h% x: ~6 e# T. V) `6 w' n第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?& g1 }1 [3 V& l& ]2 ^$ o5 u, B3 ^
第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);( t; R8 T4 _/ e" U l! ?
& ?4 o0 P4 D$ c5 u5 [1 H
" o. s; P, z0 W% s6 u(2)使用运输工具。
: m$ J/ _7 B) C+ W) [第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);
, G3 G6 Q' O" ]' i# \
7 Y8 V; R/ G% q& u1 P
& h/ i; E) I# E, g9 W3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。2 ~' G% A( y q1 ^& u$ D
! `& I. J7 }: l8 k
* M% b0 p2 y- ?
案例2:( L3 s2 U0 k1 @- j+ F
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
! G9 T/ c* E) S, d$ h5 k下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
+ L% E8 f# d$ I) H) T+ U7 H( N现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现? |
|