《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 。当这些语句在流程控制语句(比如循环语句、条件语句)中被使用时,类型推理引擎将会明确知晓:在不同的流程控制路径下,类型值也不同。

相关文章
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
487 1
【智能算法】11种混沌映射算法+2种智能算法示范【鲸鱼WOA、灰狼GWO算法】
【智能算法】11种混沌映射算法+2种智能算法示范【鲸鱼WOA、灰狼GWO算法】
|
SQL MySQL 关系型数据库
mysql DATE_FORMAT(date, format) 函数
DATE_FORMAT(date, format) 函数用法   DATE_FORMAT(date, format) 函数根据format字符串格式化date值。   1.把字符串转为日期格式 实例: SELECT DATE_FORMAT('2017-09-20 08:30:45', '%Y-...
4051 0
|
缓存 JavaScript 前端开发
🌵「硬核Vue」Vue的高级特性你真的会用吗
🌵「硬核Vue」Vue的高级特性你真的会用吗
219 5
🌵「硬核Vue」Vue的高级特性你真的会用吗
|
网络协议 Linux 网络安全
Centos Firewalld防火墙使用
Centos Firewalld防火墙使用
|
算法 编译器 C语言
函数部分的详细讲解
函数部分的详细讲解
153 0
|
存储 消息中间件 缓存
Linux 缓存与页交换
本文整理了 Linux 内核中缓存与页交换的相关知识
|
监控 算法 Java
跨平台多媒体渲染引擎的设计与实践
在当前直播和短视频领域,各家公司为了吸引用户和提升用户体验都在创新各种视频玩法, 例如美颜、美妆、虚拟形象等。这些酷炫的效果背后其实是强大的渲染技术。优酷和来疯也在 布局这一领域,我们亟需一个底层渲染框架来高效地支撑我们的业务迭代。于是,自主开发一个跨平台、可扩展、高性能的渲染引擎就被提上了日程。
跨平台多媒体渲染引擎的设计与实践
|
Java
简单代码画红包和写祝福
简单代码画红包和写祝福
193 0