Nim在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
[更多]
显示目录

枚举类型



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

枚举类型

一个枚举类型变量只能被赋值一个有限的集合。这个集合有有序的符号组成。每个符号内部映射到一个整数值。第一个符号在运行时用0表示,第二个用1表示等等。例如:

type
  Direction = enum
    north, east, south, west

var x = south      # `x` is of type `Direction`; its value is `south`
echo($x)           # writes "south" to `stdout`

所有的比较运算符都可以用枚举类型。

一个枚举符号可以避免歧义:Direction.south。

$操作符可以将任何枚举类型的值转换为它的名字,ord过程转化为它们基本的整数值。

为了更好的连接到其他语言中,枚举类型符号可以被赋值一个明确的序号值。然而,这个序号值必须是升序类型。一个符号的有序值没有明确的给出将会被赋值为前一个符号值+1.

一个明确的有序枚举可以有孔 (注:一个明确的有序类型的序数值可以不是连续的值)

type
  MyEnum = enum
    a = 2, b = 4, c = 89

序数类型

连续的枚举类型,整形,字符,以及布尔类型(和子类型)称作序数类型。序数类型有相当多的特殊操作:

操作 描述
ord(x) 返回x的整型值
inc(x) x的值+1
inc(x, n) x的值+n,n为整数
dec(x) x的值-1
dec(x, n) x的值-n,n为整数
succ(x) 返回x的下一个值
succ(x, n) 返回x后的第n个值
pred(x) 返回x的前一个值
pred(x, n) 返回x的第前n个值

inc,dec,succ,pred操作会失败通过产生EOutOfRange(越界),EOverflow(溢出)异常。(如果代码编译已经有适当的运行时检查打开)

子类型

子类型是一个来自整形或者枚举类型(基本类型)的范围值。例如:

type
  Subrange = range[0..5]

Subrange是一个int的子类型,它只能容纳从0到5的值。给Subrange子类型变量赋任何值都会出现编译或运行时错误。从基本类型给它的一个子类型赋值是允许的(反之亦然)。

系统模型定义了重要的自然类型范围 0...high(int)。其他编程语言授权自然类型使用无符号数。

这通常是错误的:你不想无符号计算仅仅是因为这个数不能为负。nim的自然类型帮助避免这种常见的编程错误。

由JSRUN为你提供的Nim在线运行、在线编译工具
        JSRUN提供的Nim 在线运行,Nim 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout