问题标签 [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.

0 投票
1 回答
581 浏览

concurrency - 解决线程本地 gc 限制的常见模式?

在我学习 Nim 的过程中,我目前正在研究 Nim 的并发编程方法。我已经看到了一些关于线程本地垃圾收集的限制的评论(例如herethere),但我仍然没有完全看到这一点的所有含义。

我想知道 Nim 中是否有某种完善的“设计模式”如何处理这些限制?也许可以考虑一个需要线程间共享/交互的典型示例,并展示此类问题的可能惯用解决方案?

到目前为止,我自己尝试提出好的解决方案并没有真正成功,并导致了这个更具体的问题TChannel

0 投票
3 回答
5972 浏览

gcc - 如何获取 nim 程序的 c 代码?

我按照文档进行了编译,nim compileToC helloworld.nim 但它只是吐出了一个可执行文件。如何查看中间 C 表示?

0 投票
1 回答
383 浏览

function-pointers - 在 Nim 中使用前向声明的原型分配函数指针

我想将一个窗口过程分配给一个窗口类结构:

我还不能分配 WndProc,因为它还没有被声明。当我使用前向声明(在此处描述)时:

我收到此错误:

我的前向声明是错误的,还是在这种情况下我必须先编写函数?

编辑:

作为参考,以下代码在全局范围内工作:

WNDCLASS 和 WNDPROC 的定义可以在这里找到:http: //nim-lang.org/windows.html

0 投票
1 回答
360 浏览

inheritance - 从 Nim 中的序列继承

我已经用 Nim 进行了大约一天的试验,我想知道如何使类型继承自内置函数(seq特别是),以便操作的过程seq也可以处理自定义类型。

我在下面包含了一个最小示例,其中 aTestCol包装/代理了一个序列 - 是否有一种方法可以在不重新定义过程的情况下TestCol支持map,filter等?

出于性能原因,该解决方案最好不需要将自定义序列转换为常规序列,并且转换比上面的简单(尽管这就是我现在按照定义建议做的事情)

真实世界的用例是在RingBuffer.nim上实现数组助手

0 投票
3 回答
3365 浏览

import - Nim 在哪里搜索要导入的模块?

使用该import语句时,Nim 如何/在哪里执行模块搜索?

我知道可以使用文件路径,但是如果我不想使用文件路径,我应该将我本地定义的模块放在我的机器上的什么位置?

我还没有使用过 Nimble,我认为这是一种方式,但我更感兴趣的是如果模块在本地定义,它将如何完成。

0 投票
1 回答
163 浏览

pointers - 从 const 获取地址

手册

可以得到变量的地址,但是不能用在通过 let 语句声明的变量上

我知道这样做是为了提供安全。现在,如果我想不惜一切代价从 const 获取地址,是否有解决方法?

0 投票
3 回答
2528 浏览

pointers - Nim:参数地址和可变性

我正在努力对 Nim 背后的政策下定决心expression has no address。特别是,我有一个 C 函数,它接受一些数据缓冲区的指针(+ 长度等)。我知道这个函数不会修改数据。简化:

一方面这是有道理的,因为参数的行为似乎与let绑定完全一样,它也“没有地址”。另一方面,我对手册中的这句话感到困惑:

var 参数对于有效的参数传递从来不是必需的。

据我所知,避免复制数据的唯一方法是:

  • 将参数传递为buf: var Buffer
  • 传递引用,即使用ref object.

在这两种情况下,这表明我的函数修改了数据。此外,它在调用者站点上引入了可变性(即用户不能再对他们的缓冲区使用 let 绑定)。对我来说关键问题是:既然“我知道”callToC是只读的,我可以说服 Nim 在没有副本的情况下允许这两个不变性吗?我看到这很危险,因为我必须确定调用是不可变的。因此,这将需要某种“不安全地址”机制,允许强制指向不可变数据的指针?

还有我对参数地址的最后一个谜团:我试图通过将类型更改为Buffer {.bycopy.} = object. 在这种情况下,副本已经在调用时发生,我希望现在可以访问该地址。为什么在这种情况下也拒绝访问?

0 投票
1 回答
114 浏览

generics - 在 Nim 中使用泛型转换类型时出现 ObjectConversionError

当我制作一个简单的类层次结构时,例如:

x访问该类型的成员变量时,我得到了预期的输出(显示在行中)bazObj

当我制作类似的层次结构但使用泛型时,代码编译得很好,但会引发ObjectConversionError异常。我的语法错了吗?或者这种类型的对象转换是否在 Nim 中不支持泛型?

如果我将第 22 行替换为echo bazObj(troz).x,则编译时会得到:

0 投票
2 回答
339 浏览

nim-lang - Nim 中的编译时调用计数

以下代码无法编译,但说明了我想做的事情:totalTests 应该保存调用 assertEquals() 的次数(assertEquals() 可能应该是一个宏才能实现这一点,但我不熟悉Nim 的这方面呢)。

知道如何修改此代码以使以下代码能够在每个测试报告行的开头打印 [1/2] 和 [2/2] 吗?

编辑:在代码中添加问题

0 投票
1 回答
792 浏览

nim-lang - 在 Nim 中进行循环依赖的规范方法

假设我们有两个模块:一个定义一个 Object,一个定义一个 ObjectFactory。Object 需要访问 ObjectFactory 才能使用它的一些功能,并且 ObjectFactory 需要访问 Object 才能实例化 Objects。

如果 Object 在一个模块中实现而 ObjectFactory 在另一个模块中实现,那么在 Nim 中解决此问题的规范方法是什么?