Nim中的任何,无和单位

时间:2016-06-26 08:36:49

标签: any nim

我无法在手册中找到任何具体信息。 任何人都可以澄清Nim中是否反映了ANY,NONE和type单位?

简短定义 - 单位类型是一种只允许一个值的类型(因此不能保存任何信息)。与单元类型相关联的载体(基础集)可以是任何单例集。在任何两个这样的集合之间存在同构,因此习惯上谈论单元类型并忽略其值的细节。也可以将单元类型视为0元组的类型,即无类型的乘积。

任何 - 类型ANY也称为ALL或Top,是通用集。 (所有可能的值)。

无 - "空集"

谢谢你!

2 个答案:

答案 0 :(得分:2)

你的问题似乎与集合有关。我们来看看:

let emptySet: set[int8] = {}

这是一组int8类型的空集。空集的{}字面值会隐式转换为任何实际的set类型。

let singletonSet = {1'i8}

这是一个只包含一个值的集合(如果我理解正确的话,单位类型)。现在可以从其中单个值的类型自动推导出该集的类型。

let completeSet = {low(int8) .. high(int8)}

此集合包含所有可能的int8值。

内置set类型实现为位向量,因此只能用于只能容纳一小组可能值的值类型(对于int8,位向量已经是256位长) 。除int8外,它通常用于char和枚举类型。

然后来自module setsHashSet可以容纳更大的类型。但是,如果构造包含所有可能值的HashSet,则内存消耗可能会非常大。

答案 1 :(得分:0)

Nim不是一种功能性语言,从不声称自己是一种语言。没有相应的这些类型,解决方案更像是c ++的道路。

有无效,最接近单位的是什么。 Any类型不存在,但有无类型pointer。但是该类型不包含任何类型信息,因此您需要知道可以将其转换为什么。对于NONE,或者我从scala中了解它,你也必须使用void。但是在这里你可以添加first question编译指示。