|
本帖最后由 zorsite 于 2017-5-13 12:25 编辑
8 h2 h$ j* E& z! X+ q) z. ^9 O
- v; Q/ L# `' v7 n* [releaseitem(obj flowitem [, num port ])
& _3 C! @0 `! x5 u. q释放指定的临时实体。! u5 U; V) u) K' u
releaseitem命令仅用于以下两种情况;
5 J9 u3 c+ E/ b. \# a* S: J1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。
- z1 O+ |2 I; C; v4 p' x& Z: E2.临时实体在任意固定实体之中,并被holditem命令控制。. M" j, X8 C) ?* ~
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。0 v; ~. w k2 X8 A Y3 U
本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.- C! o' b$ C/ a8 a
3 f* U4 |' }/ y1 T0 o# |) m) k命令示范:- O& \- P* _1 R) U1 K. t* \
releaseitem(item);
, f5 ~. \1 g/ g; \! _7 c# }2 ~& `releaseitem(rank(current,1),1);4 u0 p Q2 e: y/ R2 U+ W
releaseitem(last(current),getitemtype(item));2 `5 }- ~4 }$ v4 { Q
, y6 t- |1 x( s8 k5 F, |0 r实际使用中发现,如果要释放的临时实体不存在,程序将报错。
. K" m* F- r2 I; b$ M* F- J使用该命令时需要注意,确保第一参数flowitem指向正确。6 l2 e# J5 r0 S$ f8 V
' W8 z4 ~% Q, Y; D9 A, [; P: n$ I9 c( M
案例1:
2 u' b9 l' E2 d4 o) R, q: _使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
( Y+ z' g* q% ?, C: E0 L3 P' L+ I1.如果命令执行时货架中没有2个临时实体,程序将报错。6 u( f6 \$ \! m; J! P0 A) }
, h( C' R3 L) Q3 P& W8 Y2.假设货架存在2个临时实体。: ? N1 Z0 }, z; I% p- `
$ N. p8 e0 W& x1 y" I4 u( [ {2 e
. L! ]& V" W0 ?! U0 A8 s(1)不使用运输工具。
4 D+ }6 B8 O, h第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?1 H' s! v$ U0 o
第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);
" z2 g* ~# K/ u3 l6 ]
7 m7 `$ W2 y# ?: _' C# G! P4 ~' z; n2 l, ?
(2)使用运输工具。 Z6 Y; V R+ O: q: _! W3 z" A
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);& m# P) j: U" r0 u
5 W. ?6 x1 X# Z2 J% u, c! J; D) |6 }5 J% L) h6 l# ?3 t6 n. m
3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。
! T' E* u6 }' L& ]. J+ e
' {3 [2 ?- R! `5 n2 O {+ U1 c' T7 E2 Y5 r+ ]" ~" C
案例2:/ m B, z! s, Y4 d' b! L
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
8 _& S( f( d9 w% l0 l4 ^下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。: e: _/ x$ x: \
现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现? |
|