我们如何判断$cast的调用是函数还是任务。每个人的召唤有何不同?我理解的一件事是,通过函数调用,我将能够使用assert()。但除此之外,还有什么告诉我们调用是$cast函数还是$cast任务?在任何一种情况下,我们都会做类似$cast(pkt, pkt1); 的事情。
LRM 给出$cast函数的语法为
function int $cast( singular dest_var, singular source_exp );
和$cast任务为
task $cast( singular dest_var, singular source_exp );
并继续解释
使用 $cast 作为任务或函数决定了如何处理无效分配。
当作为任务调用时,$cast 尝试将源表达式分配给目标变量。如果赋值无效,则会发生运行时错误,并且目标变量保持不变。
当作为函数调用时,$cast 尝试将源表达式分配给目标变量,如果强制转换是合法的,则返回 1。如果强制转换失败,函数不进行赋值并返回 0。当作为函数调用时,不会发生运行时错误,并且目标变量保持不变。
请解释。