首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Nim编码风格

介绍 Nim语言不限制开发人员使用哪种具体的编码风格, 但为了社区的发展,在编写一些标准库的时候还是应该遵从统一的编码风格 这篇文章会列出一系列的编码风格准则,供大家参考。...但值得注意的是,有很多例外场景会与这些准则相悖, 而且,nim语言非常灵活,在一些特定上下文中,这些编码风格准则也不适用。...跟python相似,python的编码风格在不断演化、改变, nim语言也是这样,随着时间的推移,这个编码风格准则也会改变。...在编写nim的基础类库、编译器、官方工具的时候, 强制要求遵从这些编码风格准则 间距和空白约定 一行的代码量不应该超过80个字符,一行代码量太多的话不利于阅读; 应该使用两个空格来制定缩进,不能使用...parseURL要好很多 checkHttpHeader比checkHTTPHeader要好很多 编码约定 只有在流程控制语句需要的时候,才使用return语句 一般情况下都使用默认的result变量 (别忘了nim

97380

Nim教程【十三】

类型转换 Nim支持显示类型转换和隐式类型转换 使用casts操作符完成显示类型转换工作, 显示类型转换工作是编译期完成的工作,是位模式的 隐式类型转换也是编译期完成的工作,不是位模式的 让我们来看一下下面的代码...这是面向对象三大要素之一“多态”的重要组成部分) 来看下面的代码: # This is an example how an abstract syntax tree could be modelled in Nim...有继承关系的对象之间做类型转换非常简单 访问无效的对象属性会引发一个异常 方法 对象的方法有两个缺点 程序员难以在运行期为一个类型增加方法(或者只能用丑陋的方法才能做到) 很多时候方法的参数是不确定的 Nim...为了避免类似的问题,不分配方法到类中 后面我们将了解Nim的动态绑定方法的特性 方法调用 可以使用点操作符调用对象的方法 obj.method(args) 而不是 method(obj,args) 如果没有参数...new a new b collide(a, b) # output: 2 因为决议是从左到右执行的 所以最后一个collide方法优于前面两个collide方法 毕竟a和b都是Unit类型的 注意:Nim

91160

Nim教程【五】

这是国内第一个关于Nim的系列教程 先说废话 业内的人认为能够直接操作系统硬件的语言才称得上系统级的编程语言 常见的系统级编程语言有:汇编、C、C++、D、GO、Rust、Nim。...系统级的编程语言就不会这样,自由度非常高, 但汇编、C、C++的生产效率都比较底下 虽然C++用熟练了之后,生产效率不一定低,但这门语言的复杂度非常高,学习曲线很陡 那么就剩下较新的D、Go、Rust和Nim...因为Rust是Mozilla公司搞出来的东西,所以也有人比较担心这个问题 现在的变数还是 Mozilla 自身能不能挺住的问题 Nim和小伙伴们玩的很好 Nim的编译器可以运行在windows、linux...、BSD、和mac上,所以,跨平台的问题对于Nim来说不是问题 如果有必要,Nim的编译器可以生成C++或者Object C代码,这样对外提供接口就会方便很多 Nim可以使用很多现成的库,比如说...提供了c2nim工具可以把C语言直接格式化成Nim语言,这样C语言开发的类库就很容易被Nim使用了 参数的默认值 在定义一个方法的时候,可以为方法的参数定义好默认值,就像下面这样: proc createWindow

1.3K80

Nim教程【七】

这是国内第一个关于Nim的系列教程 先说废话 很开心,在今天凌晨快一点多的时候拿到了 nim-lang.com;nim-lang.cn;nim-lang.net 这三个域名,到不是为了投资,准备用nim-lang.com...做一个社区出来 不知道国内有没有人或者机构打算赞助这个事情的 整型 Nim语言中有10个整型类型 int;int8;int16;int32;int64;uint;uint8;uint16;uint32...2.5       # int(2.5) rounds down to 2   sum: int = int(x) + int(y) + int(z) # sum == 100 $操作符和repr方法 nim...:0x10fa8c050"nim" echo($myInteger, ":", repr(myInteger)) # --> 42:42 echo($myFloat, ":", repr(myFloat...)) # --> 3.1400000000000001e+00:3.1400000000000001e+00 注意在repr(mystring)的时候,他的内存地址也被输出出来了 关键字type 在Nim

82650

Nim教程【一】

这应该是国内第一个关于Nim入门的系列教程 什么是Nim 我们先来引述网友 Luikore的一段话: Nim 不是函数式的, 但 Nim 支持卫生宏, 可以做 AST 重写, 可以自定编译规则...Nim团队在编译期做了很多工作, 造就了Nim在不损失执行性能的前提下,提升程序员的编程效率 Nim有一个强大的...,基于AST的宏机制;Nim在本地线程上有一个强大的实时垃圾收集机制;线程之间可以通过异步消息机制通讯;为了提供执行效率,Nim还提供了一个不安全的共享内存区。...安装Nim 先在 这里下载Nim开发环境的安装包 目前官网还只提供了windows平台下Nim开发环境的安装包 对于linux平台,需要自己下载,自己编译, 不过还是很简单的...Aporia本身就是用Nim语言开发的程序,有着色功能,但没有智能提示 当然,你也可以用记事本或其他IDE来写Nim程序 输入以下代码: echo("Hello World!!!

2.3K90

Nim教程【二】

这应该是国内第一个关于Nim入门的系列教程 好,闲话休提,言归正传 Nim介绍 Nim代码会编译成C语言的代码,再编译成本地机器码,不依赖于虚拟机, 而且生成的可执行文件比较小...: string = readLine(stdin) 还可以写成这样 var name = readLine(stdin) 开发人员就不必特意指定这个变量的类型了 这就是Nim...,比方说,类似路径字符串:C:\program files\nim 你可以写成这样: var path = r"C:\program files\nim" 大段文本 在开发程序的时候...,往往需要写大段文本,比如HTML的模版 Nim允许开发人员用成对儿的三个分号包住大段文本,文本里的反斜杠也不会被当作转义符 就像这样: var str = """这是我的大段文本...countup(1, 10):   echo($i) 一定要注意最后面那个冒号 如果你打算让他返回从10到1,那么你应该使用countdown(10, 1) nim

915100

Nim教程【三】

这是国内第一个关于Nim的系列教程 (至少我百度和必应是没有找到类似的教程) 先说废话 有人说 Golang的编译器/工具链也学互联网行业跟风拿用户当测试,简直一点素质没有...(不管怎么说,我昨天跑到go社区的QQ群里去推Nim,至少是没有被踢掉的,哈哈,而且还有一个人表示对Nim感兴趣) 言归正传,依然还是介绍Nim的文字打头 Nim的表现力 Nim的编译器...、标准库都是用Nim语言实现的 (golang目前应该不是这样,但他们貌似要计划这样做) 内置高级数据类型:strings...主要是因为很多东西只有在运行期才能确定) 缩进 Screenshot (13).png 今天就写到这里,喜欢的朋友请帮我点一下推荐 你们的推荐是我写下去的最大动力 下一篇就写到Nim

58790

Nim教程【六】

目前看来这是国内第一个关于Nim的系列教程 先说废话 Rust1.0已经发布了, 国内有一个人为这个事情写了一篇非常长的博客, 这篇文章我前几天草草的看了一下,只记得这位朋友追Rust的艰辛,其他内容都已经记不清楚了...我觉得,任何正向付出都是值得鼓励和尊敬的, 这节不对其他语言做任何吐槽 就吐槽Nim本身, Nim这个语言之前叫做Nimrod,意思是猎人, 是一个圣经里的人物,曾经做过国王,大概是英勇善战...”,请使用ord方法 把一个数字类型的值格式化成字符类型,请使用chr方法 字符串类型 字符串类型是一个mutable类型(可变类型), 因此,对于一个字符串的拼接操作来说,性能表现非常好; Nim...中的字符串类型是以\0结尾的(与C语言相似) 但Nim中的字符串类型还包含一个长度的属性(这样你取一个字符串的属性,就非常高效了) 这个属性不会计算字符串结尾的\0字符 你可以通过len方法获得一个字符串的长度

93060

Nim教程【十五】【完结】

模版 模版是Nim语言中的抽象语法树,它是一种简单的替换机制,在编译期被处理 这个特性使Nim语言可以和C语言很好的运行在一起 像调用一个方法一样调用一个模版 请看如下代码: template `!...语言的宏提供了一个高级的编译期的替换功能 Nim语言的宏不能替换语言本身的语法, 但这并不是什么缺憾,因为Nim语言本身已经足够灵活了。...如果外部接口在编译期不可用,那么你就必须用纯Nim语言写宏 (这估计就是在说Nim和C混合编程的时候要注意的事情) 你可以使用Nim代码编写任何形式的宏,编译器会在编译期把他们翻译成真正的Nim代码。...可以有两种办法写一个宏 用Nim代码编写宏,让编译器解析它 手动创建抽象语法树AST,你告诉编译器 如果你想建立抽象语法树AST,那么你一定要知道Nim语言的语法是怎么转换为抽象语法树的 在N关于宏的帮助说明文档...defined in the # ``macros`` module: import macros macro debug(n: varargs[expr]): stmt =   # `n` is a Nim

92780
领券