|
本帖最后由 zorsite 于 2017-5-13 12:25 编辑 1 |$ o" k4 V5 B y" W$ \; _
@7 z7 F: b6 d+ {4 a" T, Freleaseitem(obj flowitem [, num port ])
% j! U5 a1 U% @5 L N. Y/ y释放指定的临时实体。
`# W K' l" v% g5 x8 ^releaseitem命令仅用于以下两种情况;
! m2 S4 h& M, c9 y. m7 h1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。+ m& R+ M. `9 ^5 w' ^7 A9 c( H
2.临时实体在任意固定实体之中,并被holditem命令控制。# j- T) o1 s; E: ]7 t2 S1 p
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
# k2 g" y7 }8 y3 [7 T. {# s本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.- p6 f1 E0 P( |, \
$ K" l3 x2 q3 s* v; ~! L, T' q/ y8 q命令示范:0 S& u3 m) w! O. Q9 {4 `+ t
releaseitem(item);8 Y1 @; O1 Z/ Q0 b2 k& Z! u
releaseitem(rank(current,1),1);7 H8 p$ t' v9 B" E7 ^ C
releaseitem(last(current),getitemtype(item));; n5 V- M1 m4 ]7 U: e
. @& N% k. Z* S) ]3 f0 ]. l: x实际使用中发现,如果要释放的临时实体不存在,程序将报错。
8 A+ u, E k2 A5 J, v9 ]; }7 c使用该命令时需要注意,确保第一参数flowitem指向正确。& K" Q8 Y0 p3 P
0 Q4 F# v+ k" a" M7 `
8 s! s% {& g" S; c案例1:
' p3 z2 r: {9 g9 `( d使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
! Z# e( L3 p- R+ t' a5 ` T* w1.如果命令执行时货架中没有2个临时实体,程序将报错。7 Y {4 n5 R' f2 H3 y
8 C3 N% O4 V& a8 q1 w5 b' @* p" ^+ L% M2.假设货架存在2个临时实体。
2 a6 U+ U. w( U) E Z
/ j& e4 ~4 z( H+ h0 c0 p# V% X4 ]" a: i
(1)不使用运输工具。2 k i" Y# Q. w6 x& T, l
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
$ \/ i" q8 ]5 S- N第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);$ X5 u( {4 m% i, {9 I
* @# N, y- L% a" _' M" c: H% |2 ]3 r2 i+ U8 O
(2)使用运输工具。4 \6 X# I4 P$ m! m
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);
! y8 l( H$ h) N6 G5 \! T0 R: p1 V8 O, n
+ X1 N, o7 N, a0 w3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。" P5 g2 e. S- M( V( N* U5 @% a
, [% t4 }0 ]/ y( G$ @$ h! ~
2 q5 n' T) _0 l) b8 r案例2:
% [# s9 R: [- z% S( o假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
# m; y6 M: d. |6 Z下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。) _5 |( G# e' e9 _0 y, T/ n. s
现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现? |
|