С World.nqp, строка 3602 :
nqp::if(
nqp::istype(nqp::atpos($task,3),$!Block),
QAST::Op.new( :op<call>,
QAST::WVal.new(:value(nqp::atpos($task,3))),
$self,
$getattr
),
nqp::if(
nqp::iseq_i($code,5),
QAST::IVal.new(:value(nqp::atpos($task,3))),
QAST::NVal.new(:value(nqp::atpos($task,3)))
)
),
, тогда как с World.nqp, строка 3314 :
if $invocant_type =:= $!acc_sig_cache_type {
$sig := $!acc_sig_cache;
}
# First time, create new signature and mark it cached
else {
$sig := $!w.create_signature_and_params(
NQPMu, %sig_empty, $block, 'Any', :method, :$invocant_type);
$!acc_sig_cache := $sig;
$!acc_sig_cache_type := $invocant_type;
}
Я думал, что последняя форма if
(без nqp::
) впереди не была разрешена, если только if
не был встроенным?См. Список встроенных подсистем NQP .
Первая форма nqp::if
описана в Списке кодов операций NQP , однако я не смог найти документацию длявторая форма, хотя кажется, что это наиболее распространенная форма в дереве исходников Rakudo.
Почему в NQP есть две формы операторов if
?