软件开发过程减小程序之间的“耦合性”至关重要,降低耦合性的一个方法是模块化,Scala提供和Java类似的分包机制,但又稍有不同,因此即使你了解Java语言,还是建议您阅读本篇和后续几篇介绍Scala...
我们已经看到Trait的一个主要用法,将一个瘦接口变成胖接口,本篇我们介绍Trait的另外一个重要用法,为类添加一些可以叠加的修改操作。Trait能够修改类的方法,并且能够通过叠加这些操作(不同组合)...
比较对象也是胖接口来的比较方便的一个应用领域,当你需要比较两个有顺序关系的对象时,如果只需要一个方法就可以知道需要比较的结果就非常便利。比如,你需要“小于”关系,你希望使用“< “比较就可以了,如果是...
概述Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的有这样几个。(1) 将Object对象的一些明显属于语言内部的方法(比如Objec...
在设计绘图程序库时常常需要定义一些具有矩形形状的类型:比如窗口,bitmap图像,矩形选取框等。为了方便使用这些矩形对象,函数库对象类提供了查询对象宽度和长度的方法(比如width,height)和坐...
Trait的一种主要应用方式是可以根据类已有的方法自动为类添加方法。也就是说,Trait可以使得一个瘦接口变得丰满些,把它变成胖接口。选择瘦接口还是胖接口的体现了面向对象设计中常会面临的在实现者与接口...
在Scala中Trait为重用代码的一个基本单位。一个Traits封装了方法和变量,和Interface相比,它的方法可以有实现,这一点有点和抽象类定义类似。但和类继承不同的是,Scala中类继承为单...
前面我们给出了Scala的类的一个关系图:在这张图的最下方我们可以看到有两个类,scala.Null和scala.Nothing. 这两个类的作用是Scala支持统一方式用来处理面向对象的一些边角情况...
Scala的基本数据类型是如何实现的?实际上,Scala以与Java同样的方式存储整数:把它当作32位的字类型。这对于有效使用JVM平台和与Java库的互操作性方面来说都很重要,。标准的操作如加法或乘...
前面我们介绍了Scala的类的继承,本篇我们介绍Scala语言自身定义的类的层次关系,在Scala中,所有的类都有一个公共的基类称为Any,此外还定义了所有类的子类Nothing,下面的图给出的Sca...
前面我们基本完成了布局元素的函数库,现在我们就可以写个程序来使用这个函数库,下面显示螺旋线的程序如下:object Spiral { val space = elem (" ") val corn...
我们还需要最后一个改进,之前的Element实现不够完善,只支持同样高度和同样宽度的Element使用above和beside函数,比如下面的代码将无法正常工作,因为组合元素的第二行比第一行要长:ne...
到目前为止,我们定义了关于布局元素类的一个层次结构。你可以把包含这个层次关系的类作为API接口提供给其它应用,但有时你可以希望对函数库的用户隐藏这种层次关系,这通常可以使用factory(构造工厂)对...
们接着实现类Element的其它方法,如above, beside和toString方法。above方法,意味着把一个布局元素放在另外一个布局元素的上方,也就是把这两个元素的contents的内容连接...
由于我们的Web App建立在asyncio的基础上,因此用aiohttp写一个基本的app.py:import logging; logging.basicConfig(level=logging....
前面我们说过,构建新类的两个基本方法是组合和继承,如果你的主要目的是代码重用,那么最好使用组合的方法构造新类,使用继承的方法构造新类造成的可能问题是,无意的修改基类可能会破坏子类的实现。关于继承关系你...
搭建开发环境首先,确认系统安装的Python版本是3.5.x:$ python3 --versionPython 3.5.1然后,用pip安装开发Web App需要的第三方库:异步框架aiohttp:...