问题标签 [nim-lang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
templates - 模板和宏中的类型化 vs 非类型化 vs expr vs stmt
我最近一直在使用模板和宏,但我不得不说我几乎没有找到关于这些重要类型的信息。这是我肤浅的理解:
- typed/expr 是以前必须存在的东西,但您可以使用 .immediate。克服它们。
- untyped/stmt 是之前没有定义的东西/一个或多个语句。
这是一个非常模糊的类型概念。我想对它们有更好的解释,包括哪些类型应该用作返回。
nim-lang - 数组上的 MD5,array[0..63, uint8] 到 cstring 的转换
我正在尝试对数组 [0..63, uint8] 执行 md5Update 但我得到了
似乎它想要一个 cstring 输入而不是一个缓冲区。那么如何对二进制数据执行 md5Update() 呢?(我不希望最后有一个空字符......)
c++ - 将以下 C++ 代码翻译成 Nim
我试图通过转换不同的代码来学习 Nim,但我偶然发现了一些我以前从未见过的东西。
我了解三元运算符是什么以及它是如何工作的,但我不太了解变量“t”和“cnt”(都是整数)和数组“p”(整数数组)的情况。使用增量作为“p”的索引如何工作?
然后是 sort 函数,我完全放弃了它,因为我找不到任何关于它的作用的文档(事实上它将整数添加到数组中显然没有帮助)。
generic-programming - 如何在 Nim 模板中获取 expr 的字符串表示
是否有可能在 a 中获取表达式(或标识符)的字符串表示形式template
?例如,有下一个代码:
name
是否可以在模板中获取表达式的字符串表示形式?
profiling - 如何使用 nimprof?
在我的一个 Nim 项目中,我遇到了性能问题。我现在正在尝试使用nimprof
以查看发生了什么。我的主源文件中有一个import nimprof
,我正在使用--profiler:on
. 当我运行程序时,我可以看到以下消息:
但是,profile_results.txt
仅包含以下内容:
运行时间大约是 1 分钟——所以我认为这还不足以对任何东西进行采样。有什么办法可以从中得到更有意义的东西nimprof
吗?
nim-lang - Nim:在 mac 上,无法打开标准导入
我在 Mac 上使用 nim,但遇到了以下问题:
尝试编译时出现此错误:
csvx.nim(1, 6) 错误:无法打开“strutils”~/dev/polyglot/csvx/
我使用“基于生成的 C 代码安装”选项安装了 nim。
nim-lang - 从序列中解压缩多个变量
我期待下面的代码打印chr7
。
相反,它打印@[chr7, 127471196, 127472363]
.
有没有办法同时从序列中解压缩多个值?
如果元素不连续,那么执行上述操作的最简单方法是什么?例如:
给出错误:
nim-lang - Nim:如何证明不为零?
对我来说,Nim 最有趣的特性之一是not nil
注释,因为它基本上允许在编译器的帮助下完全排除各种 NPE / 访问冲突错误。但是,我在实践中很难使用它。让我们考虑一个最基本的用例:
这里的一个直接陷阱是,即使实例化这样的 aSafeSeq
也不是那么容易。尝试
因错误而失败cannot prove 'newSeq(100)' is not nil
,这令人惊讶,因为人们可能会认为 anewSeq
不是 nil。一种解决方法似乎使用这样的助手:
尝试使用SafeSeq
. 例如,人们可能期望当您映射 a 时SafeSeq
,结果不应再次为 nil。但是,这样的事情也会失败:
一般的问题似乎是,一旦返回类型变为普通类型seq
,编译器似乎就会忘记该not nil
属性并且无法再证明它。
我现在的想法是引入一个小的(可以说是丑陋的)辅助方法,让我能够实际证明not nil
:
但是,编译器在这里也无法证明not nil
。我的问题是:
在这种情况下,我应该如何帮助编译器进行推断
not nil
?此功能的长期目标是什么,即是否有计划使推理
not nil
功能更强大?手册的问题proveNotNil
在于它可能不安全,并且与编译器负责证明它的想法背道而驰。但是,如果proveNotNil
仅在极少数情况下才需要它,那不会有太大伤害。
注意:我知道seq
尝试nil
不可知论,即即使在这种情况下一切正常nil
。但是,这只适用于 Nim 内部。在连接 C 代码时,nil-hiding-principle 成为错误的危险来源,因为nil
序列仅在 Nim 方面是无害的......
nim-lang - 错误:表达式没有地址
错误:
编译器想要什么?
nim-lang - 将 seq[char] 转换为字符串
我的情况是,我有一个seq[char]
,像这样:
转换s
回字符串(即"abc"
)的最佳方法是什么?Stringifying with$
似乎给"@[a, b, c]"
,这不是我想要的。