我无法在手册中找到任何具体信息。 任何人都可以澄清Nim中是否反映了ANY,NONE和type单位?
简短定义 - 单位类型是一种只允许一个值的类型(因此不能保存任何信息)。与单元类型相关联的载体(基础集)可以是任何单例集。在任何两个这样的集合之间存在同构,因此习惯上谈论单元类型并忽略其值的细节。也可以将单元类型视为0元组的类型,即无类型的乘积。
任何 - 类型ANY也称为ALL或Top,是通用集。 (所有可能的值)。
无 - "空集"
谢谢你!答案 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 sets的HashSet
可以容纳更大的类型。但是,如果构造包含所有可能值的HashSet
,则内存消耗可能会非常大。
答案 1 :(得分:0)
Nim不是一种功能性语言,从不声称自己是一种语言。没有相应的这些类型,解决方案更像是c ++的道路。
有无效,最接近单位的是什么。 Any类型不存在,但有无类型pointer
。但是该类型不包含任何类型信息,因此您需要知道可以将其转换为什么。对于NONE,或者我从scala中了解它,你也必须使用void
。但是在这里你可以添加first question编译指示。