《Hack与HHVM权威指南》——1.7 类型提炼

本节书摘来自华章出版社《Hack与HHVM权威指南》一书中的第1章,第1.7节,作者 Owen Yamauchi,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.7 类型提炼

假设你有个?string类型的值,而且准备把这个值传递给一个参数类型为string的函数。那么你怎么把一个类型(?string)转化为另外一个类型(string)呢?或者假设你有个object类型的值,它可能实现或没有实现Polarizable接口。同时,如果它实现了这个接口,你还希望调用这个object的方法polarize()。那么类型检查器如何才能知道polarize()调用是合法的?
在一个良好组织的代码中,实现一个值是一个类型同时又是另外一个类型的任务情况非常常见。这些看起来非常琐碎的事情是你必须拿来安抚类型检查器的关键所在。这是Hack能够在开发前期就捕获问题的关键。这也是Hack能够避免像调用一个不存在的方法、在不恰当的地方找到了一个空值,以及其他一些在PHP代码库开发调试中常见的恼人错误这些情况的原因。
你有三种类型检查器使用的方式对这些类型进行提炼转化,它们是:是否为空检查、类似is_integer()的内置类型查询函数,以及instanceof 。当这些语句在流程控制语句(比如循环语句、条件语句)中被使用时,类型推理引擎将会明确知晓:在不同的流程控制路径下,类型值也不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值