Scala讲座:全局变量问题的解决

发表于:2011-5-12 10:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:牛尾刚    来源:51Testing软件测试网采编

#
java
分享:

  本文节选自最近在日本十分流行的Scala讲座系列的第七篇,由JavaEye的fineqtbull翻译。本系列的作者牛尾刚在日本写过不少有关Java和Ruby的书籍,相当受欢迎。fineqtbull由于时间关系先翻译了他认为最精彩的第七篇,这篇文章节选了第七篇中关于Scala全局变量的描述。

  前言

  这个连载也持续了不少的“刺激”内容了,这次为还没有习惯函数式编程的读者写一些东西。

  这样写那好像我就是函数式编程的高手了,其实不是。到现在为止做的尽是Java的工作,从去年开始对于羽生田先生的Scala工作感兴趣之后投身于Scala语言以来,一直没有习惯函数式的思考方法,整天在这里面摸爬滚打。看了大量文章,写了大量代码之后终于觉得抓住了函数式编程的重点。

  用面向对象和函数式方法来解决全局变量问题

  关于需要函数式编程的动机,想从“全局变量问题”这个侧面来考虑一下。

  “全局变量问题”是有关程序维护方面的问题(图1)。在编写多模块共享全局变量的时候,很难知道在何时哪个模块使用了该全局变量,程序也就比较容易出错了。而且,当准备删除全局变量时,由于不知道是否还有其他模块在使用它,所以最终把全局变量的定义留在那里不动了。类似情况大家都应该碰到过吧。

Scala讲座 图1:全局变量问题

  解决“全局变量问题”有两个方法,一是收窄数据的有效范围;二是使变量被赋值一次后就不能更改。

  面向对象的方式采取的是第一种方法。多模块共有的数据被封装在“对象”中,只有在“对象”内部才能够被使用(图 2)。

Scala讲座 图2:面向对象方式下解决全局变量问题的方法

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号