$cast可以作为task,也可以作为function。作为task时,当cast失败,会产生runtime error, 作为function时,cast成功返回1,失败返回0,不会产生runtime error。$cast是动态类型转换,只在runtime check,而静态类型转换是compile check。
对于class cast,可以将subclass assign给super class,一般不能将super class assign 给subclass。但是如果super class的handle指向subclass,那可以将这个super class的handle assign给改subclass变量。