August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
好的、有用的概念是基础,我们更多地是发现它们而非设计它们。这方面的例子包括整数和浮点数(甚至在经典C中就有定义)、序列和更一般的数学概念,如域和向量空间。它们都是表示一个应用领域的基本概念,这也是“概念”名称的由来。发现、形式化概念使其达到有效泛型编程所需的程度,是很有挑战性的。
对于基本应用,考虑概念Regular(参见12.7节)。如果一个类型的行为类似于一个int或一个vecotr,则称它是正规的。一个正规的类型的对象
·可默认构造。
·可使用构造函数或赋值操作进行拷贝(使用通用的拷贝语义,产生两个独立的对象,比较起来是相等的)。
·可用==和!=进行比较。
·没有采用过分聪明的编程花招而导致技术问题。
string是另一个正规类型的例子。类似int,string也是StrictTotallyOrdered的(参见12.7节)。即,两个字符串可以用<、<=、>和>=进行比较,采用的是恰当的比较语义。
概念不只是一种语法上的概念,从本质上来说它是关于语义的。例如,不应定义+来进行除法计算;这与任何合理数字的要求不符。不幸的是,现在还没有任何语言支持表达语义,因此不得不依赖专家知识和常识来得到语义上有意义的概念。不要定义语义上无意义的概念,如Addable和Subtractable。取而代之,依赖领域知识来定义能匹配应用领域中基本概念的概念。
Read now
Unlock full access