二维布局库
作为本章运行的例子,我们将创造一个制造和渲染二维布局元素的库。每个元素 将代表一个填充字符的长方形。方便起见,库将提供名为“elem”的工厂方法来通过传入的 数据构造新的元素。例如,你将能通过工厂方法采用下面的写法创建带有字串的元素:
elem (s: String): Element
正如你所见,元素将以名为Element的类型为模型。你将能在元素上 调用above或beside,传入第二个元素,从而得到合并了这两个的新元素。例如,下面的表达式将构建一 个包含两列,每列高度为二,的更大的元素:
val column1 = elem("hello") above elem("***") val column2 = elem("***") above elem("world") column1 beside column2
打印这个表达式的结果将是:
hello *** *** world
在对象能通过简单的部件及组合操作符的帮助被构建的系统中,布局元素是个好的 例子。本章里,我们将定义类使得元素对象能被构建自数组,行记录,以及长方形——简单 部件。我们还将定义组合操作符above和beside。这种组合操作符也经常被称为组合子:combinator,因 为它们把某些区域的元素组合成新的元素。
以组合子的方式思考问题通常是实现库的设计的好方 法:它能回报以考虑在应用域构建对象的基础方法。什么是简单对象?用什么方式能让更多有趣的对象 通过简单对象构造出来?组合子是怎么挂在一起的?什么是最通用的组合?它们满足任何有趣的规则吗 ?如果你对这些问题都有好的答案,你的库设计就在正轨上了。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索布局
, 对象
, 组合
, 元素
, 操作符
, 二维数组合并
, 二维
元素组合
,以便于您获取更多的相关知识。