知识卡片
把代码包装成对象让控制流不再需要专门语法
内容
把一段代码包装成一个可以像普通对象一样被传递、存储、延迟执行的语句块(闭包),语言就不再需要专门的语法关键字来表达条件判断、循环这些控制流:条件判断本质上就是向一个布尔对象发消息,把两个语句块分别作为真假分支的参数传进去,循环也只是反复对某个语句块求值。控制流因此不再是语言语法层面的特殊结构,而是对象和消息机制的自然产物,这解释了为什么这类语言的语法元素可以少到只有几种。
参考来源
- 位置:《架构之美》第14章《重读经典》14.1节《所有东西都是对象》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0277.xhtml)
- 结论依据:原文明确"我们在这个列表中没看到的东西可能比看到的东西更有趣:我们没有看到任何表示控制流的元素,没有条件判断或循环。它们不需要,因为它们是通过消息、对象和语句块(都是对象)来实现的",并以ifTrue:方法为例说明。
- 原始内容:我们没有看到任何表示控制流的元素,没有条件判断或循环。它们不需要,因为它们是通过消息、对象和语句块(都是对象)来实现的……操作符=和>是消息选择器……如果选择器ifTrue:的消息接收者是True的一个实例,那么它的参数就会被执行。