问题标签 [elixir]

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 投票
2 回答
1375 浏览

testing - Elixir 测试 - ExUnit - 重复数据实例

我正在使用 ExUnit 测试我的 Elixir 应用程序,这是一款纸牌游戏。

我发现每次编写测试时,我都会从创建一副新的纸牌开始。

有没有办法解决这个问题,以便在每个测试用例之前创建一个新的套牌?我知道有一些与此相关的东西setup do [...] end,但我认为这不是我的解决方案。

我需要不同的测试框架吗?我需要以setup我还没有想到的方式使用吗?

-奥吉

0 投票
4 回答
9052 浏览

elixir - 有没有办法在 Elixir 的 ExUnit 中测试模块中的私有函数?

定义的函数defp不会被导出,所以我不能在模块以外的地方执行它们。

0 投票
2 回答
450 浏览

erlang - 是否有任何类似 Erlang 的 VM 的实现\原型不仅可以在 CPU 上运行,也可以在 gpu 上运行?

我正在使用 MPI、ZepoMQ、RabbitMQ 等消息传递库以 OOP 语言创建分布式系统。现在我发现自己在看一些erlang的宣传材料,并了解到我们使用库(每个进程 1 000 000 个套接字连接、分布式消息传递和分布式进程监控可视化)在 OOP 语言(如 C++ 和 C#)中模拟的许多东西在 Erlang 中存在多年现在。更好地了解这门语言似乎是合理的。我发现自己问了最后一个问题:是否有任何类似 Erlang 的 VM 的实现\原型可以不仅在 CPU 上而且在 GPU 上运行/生成一些进程?

因为这肯定会使 Erlang(对于我的 OOP 背景方言,如Elixir ,它更具可读性)成为大多数未来项目的首选语言。

0 投票
1 回答
254 浏览

function - 惯用的 Elixir - 函数参数样式

drawhand变量是列表。我想将最上面的牌移出平局并将其添加到手牌中。这是功能:

可以通过包含 [head | 参数列表中的tail]部分:

那会是更惯用的Elixir吗?它会损害可读性吗?我想如果函数定义具有传入列表的名称而不是 Head|Tail 调用,那么以后代码会更容易阅读。

这是个人喜好问题,还是我最好保存那行代码并将 Head|Tail 调用粘贴在函数定义中?

0 投票
1 回答
1183 浏览

function - 如何在 Elixir 中动态调用运算符

我正在阅读 Dave 即将出版的关于 Elixir 的书,在一个练习中,我想根据字符串的一个字符的内容,动态构造对 等的函数引用Kernel.+/2,等等。Kernel.-/2'+''-'

基于另一个 SO question,我希望能够调用apply/3传递内核,:+ 和两个这样的数字:

这不起作用,因为(如果我理解正确的话)Kernel.+/2是一个宏,而不是一个函数。我查找了源代码,并+根据 定义__op__,我可以从以下位置调用它iex

这一直有效,直到我将 :+ 放入变量中:

而且我猜没有办法调用__op__using apply/3

当然,蛮力方法可以完成工作。

但是还有更简洁和动态的东西吗?


何塞·瓦利姆(José Valim)在下面给出了答案。这是上下文中的代码:

0 投票
2 回答
7053 浏览

switch-statement - 康德和凯斯有什么区别?

在 Elixir 编程语言中,有两个相似的结构condcase. 两者都类似于来自其他语言的switchorselect语句

两者condcase此页面上进行了描述

0 投票
1 回答
419 浏览

macros - 如何命名宏,使其看起来像 Elixir 中的常量?

在 Erlang 中,我们可以定义一个像-define(TIME, 60 * 60).And 这样的宏,从宏的调用中?TIME我们可以准确地知道它们是宏。

然而,在 Elixir 中,宏的调用看起来像函数调用。我们不能轻易地区分宏调用和函数调用。

那么,有没有一种方法可以命名一些像常量一样的宏?

0 投票
1 回答
755 浏览

mnesia - 我们是否有内置机制可以在 Elixir 中启动 Mnesia?

似乎我们只能通过键入来启动 Mnesia iex --erl "--mnesia dir '~/doc/'" --name mynode

我们可以在不向erl传递参数的情况下启动它吗?

0 投票
1 回答
230 浏览

elixir - Weber 快速启动项目构建失败

我遵循了Weber Quick start,但该命令mix deps.get && mix compile --all --force && ./start.sh导致以下输出:

对于如何解决这个问题,有任何的建议吗?

0 投票
2 回答
5567 浏览

function - 创建新的保护子句

在 Elixir 中,我将如何为函数创建新的保护子句?显然,我已经看到您不能只在when语句中调用任何函数,但是能够执行以下操作会很好: