Nim在线运行

版本:

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

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

引用和指针类型



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

点击购买 固件广场

引用和指针类型

引用(类似与其他编程语言中的指针)是一种介绍多对一关系的一种方法。这意味着不同的引用可以指向和修改相同的内存单元。

在nim中分为追踪引用和非追踪引用(反追踪)。非追踪引用也叫做指针。跟踪引用指向一个垃圾收集堆对象,反跟踪指向手动分配的对象或内存中其他地方的对象。因此反跟踪引用是不安全的。然而对于某些低级操作(访问硬件)反跟踪引用是不可避免的。

追踪引用用ref关键字声明,反追踪引用用ptr关键字声明。

空[]下标符号可以用于解参考一个引用,引用指向的检索项的意义。.(访问一个元组或者对象域操作)和[](数组/字符串/序列索引操作)操作符执行隐式解引用操作对于引用类型:

type
  Node = ref NodeObj
  NodeObj = object
    le, ri: Node
    data: int
var
  n: Node
new(n)
n.data = 9
# no need to write n[].data; in fact n[].data is highly discouraged!
不推荐写n[].data

为了创建一个新的追踪对象,内置函数new()必须被使用。为了处理反追踪内存函数alloc(),dealloc(),realloc()函数可以使用。系统模块的文档包含更多的信息。

如果一个引用指向空,它的值为nil.


过程类型

一个程序类型是一个(有些抽象)程序的指针。空值是一个允许的程序类型变量的值。Nim用程序类型来实现功能编程技术。

Example:

proc echoItem(x: int) = echo(x)

proc forEach(action: proc (x: int)) =
  const
    data = [2, 3, 5, 7, 11]
  for d in items(data):
    action(d)

forEach(echoItem)

关于程序类型的一个微妙的问题是:程序的调用约定会影响类型的兼容性。只有具有相同调用约定的程序才具有兼容性。手册中列出了调用约定的不同。

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