本节书摘来华章计算机《交互式程序设计 第2版》一书中的第2章 ,第2.7节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.7 作用域

作用域有时让人很讨厌,由它而起的问题通常难以定位。幸而要避免这样的问题其实还挺简单。
先看一段Processing代码:

void setup() { if(true) { int i = 0; } i+=1; print(i);
}

我们在第3章会仔细讲Processing平台,现在你看不懂也没有关系,直接编译它。编译之后Processing的控制台窗口会弹出些有趣的消息:

Cannot find anything named "i"

找不到名为“i”的东西。怎么回事呢?作用域是程序代码的其中一段或一部分,在这个区域里,你可以访问和获取相应的数据等内容,而在作用域之外则无法访问和获取。图2-8表示了每个变量所属的作用域。

图2-8:一个函数里变量的作用域
一般的规律是,变量在最接近它的花括号内有效。例如在函数内定义了一个变量:

void someFunction() { int anInt;
}

anInt在函数内有效,右花括号就是它作用域结束的标志。变量如果是在语句内被定义的,比如

if(something) { int anInt;
}
anInt = 5; // 错误!anInt在花括号之外就失效了

那么它只存在于语句之内,所以上面的这个anInt在if语句之外就失效了。为什么要规定作用域呢?简单说来就是为了让程序分清哪些东西在用,哪些东西没在用,这样运行起来会更加高效。只要记住括号定律就行了:如果变量出现之前有一个左花括号,那么这个变量作用域就是到对应的右花括号为止。
有些变量在整个程序里都有效,不会越出作用域。这类变量被称为“全局变量”。在Processing和Arduino里,全局变量在方法setup()的外面声明。在openFrameworks里情况有点不同,我们在后面专门讲openFrameworks的时候再来详细讨论。后面的章节分别讨论不同的编程语言,每一种语言对全局变量的处理都稍有不同,到时你会对全局变量有更深入的了解。

《交互式程序设计 第2版》一2.7 作用域相关推荐

  1. 《交互式程序设计 第2版》一3.1 下载并安装Processing

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第3章 ,第3.1节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华章 ...

  2. 《交互式程序设计 第2版》一3.5 捕获简单用户交互行为

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第3章 ,第3.5节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华章 ...

  3. 《交互式程序设计 第2版》一3.6 关系比较

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第3章 ,第3.6节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华章 ...

  4. 《交互式程序设计 第2版》一2.2 代码的本质

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第2章 ,第2.2节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华章 ...

  5. 《交互式程序设计 第2版》一3.11 小结

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第3章 ,第3.11节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华 ...

  6. 《交互式程序设计 第2版》一1.2.4 交互语言

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第1章 ,第1.2.4节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区" ...

  7. 《交互式程序设计 第2版》一1.2 交互领域中的编程

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第1章 ,第1.2节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华章 ...

  8. 《交互式程序设计 第2版》一第1章

    本节书摘来华章计算机<交互式程序设计 第2版>一书中的第1章 ,第1.1节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区"华章 ...

  9. python编程入门第3版pdf-Python程序设计 第3版pdf

    Python程序设计 第3版 内容简介 <Python程序设计 第3版>是面向大学计算机科学专业的教材.本书以Python语言为工具,采用相当传统的方法,强调解决问题.设计和编程是计算机科 ...

最新文章

  1. R构建KNN多分类模型
  2. Android 5.0状态栏和导航栏
  3. 【玩转cocos2d-x之三十】点九图和输入框的使用
  4. 2g 双核电脑 linux,9208)(奔腾双核E5200/2G/320G)电脑详细技术
  5. 汉字转html实体符号js_html实体编码遇上js代码
  6. QT每日一练day18:文件IO
  7. Linux 数据处理
  8. ionic2.x 手动搭建开发环境教程分享(nodejs,jdk,ant,androidsdk)
  9. 【2】Keras之激活函数
  10. 大数据可视化分析方法与流程
  11. Heavyocity PUNISH Lite for Mac - 虚拟自动音频增强效果器
  12. swf游戏保存进度_flash格式如何保存为swf格式动画?flash格式小游戏保存成swf格式方法 - 软件教程 - 格子啦...
  13. opencv图像处理学习(五十七)——峰值信噪比和结构相似性
  14. 设计思维(Design Thinking)
  15. 级数ex展开_方亚斌---用ex的幂级数展开式编拟高考题
  16. 清华大学计算机通识选修,清华大学外语通识选修课调查分析-20210720010045.docx-原创力文档...
  17. DOM以及DOM事件的处理方式
  18. chrome常用扩展程序汇总(程序员版)
  19. 渗透测试资产指纹识别工具
  20. 删除矮人Dos目录argh

热门文章

  1. flex 单独一行_Flex网页布局一CSS弹性伸缩盒子语法教程
  2. elasticdump安装_elasticdump备份及恢复es数据
  3. Spark读取MySQL中的数据为DataFrame
  4. 【Git】如何撤销改动
  5. 魅族android p,2.Android P新特性实践-Slices
  6. java网络编程的通信原理_11 - 网络编程之设备间通信原理
  7. devDependencies与dependencies (转载)
  8. eachart图表100px大小原因,及处理办法
  9. windows server 证书的颁发与IIS证书的使用
  10. jQuery Mobile基础