问题标签 [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.
testing - Elixir 测试 - ExUnit - 重复数据实例
我正在使用 ExUnit 测试我的 Elixir 应用程序,这是一款纸牌游戏。
我发现每次编写测试时,我都会从创建一副新的纸牌开始。
有没有办法解决这个问题,以便在每个测试用例之前创建一个新的套牌?我知道有一些与此相关的东西setup do [...] end
,但我认为这不是我的解决方案。
我需要不同的测试框架吗?我需要以setup
我还没有想到的方式使用吗?
-奥吉
elixir - 有没有办法在 Elixir 的 ExUnit 中测试模块中的私有函数?
定义的函数defp
不会被导出,所以我不能在模块以外的地方执行它们。
erlang - 是否有任何类似 Erlang 的 VM 的实现\原型不仅可以在 CPU 上运行,也可以在 gpu 上运行?
我正在使用 MPI、ZepoMQ、RabbitMQ 等消息传递库以 OOP 语言创建分布式系统。现在我发现自己在看一些erlang的宣传材料,并了解到我们使用库(每个进程 1 000 000 个套接字连接、分布式消息传递和分布式进程监控可视化)在 OOP 语言(如 C++ 和 C#)中模拟的许多东西在 Erlang 中存在多年现在。更好地了解这门语言似乎是合理的。我发现自己问了最后一个问题:是否有任何类似 Erlang 的 VM 的实现\原型可以不仅在 CPU 上而且在 GPU 上运行/生成一些进程?
因为这肯定会使 Erlang(对于我的 OOP 背景方言,如Elixir ,它更具可读性)成为大多数未来项目的首选语言。
function - 惯用的 Elixir - 函数参数样式
draw和hand变量是列表。我想将最上面的牌移出平局并将其添加到手牌中。这是功能:
我可以通过包含 [head | 参数列表中的tail]部分:
那会是更惯用的Elixir吗?它会损害可读性吗?我想如果函数定义具有传入列表的名称而不是 Head|Tail 调用,那么以后代码会更容易阅读。
这是个人喜好问题,还是我最好保存那行代码并将 Head|Tail 调用粘贴在函数定义中?
function - 如何在 Elixir 中动态调用运算符
我正在阅读 Dave 即将出版的关于 Elixir 的书,在一个练习中,我想根据字符串的一个字符的内容,动态构造对 等的函数引用Kernel.+/2
,等等。Kernel.-/2
'+'
'-'
基于另一个 SO question,我希望能够调用apply/3
传递内核,:+ 和两个这样的数字:
这不起作用,因为(如果我理解正确的话)Kernel.+/2
是一个宏,而不是一个函数。我查找了源代码,并+
根据 定义__op__
,我可以从以下位置调用它iex
:
这一直有效,直到我将 :+ 放入变量中:
而且我猜没有办法调用__op__
using apply/3
。
当然,蛮力方法可以完成工作。
但是还有更简洁和动态的东西吗?
何塞·瓦利姆(José Valim)在下面给出了答案。这是上下文中的代码:
switch-statement - 康德和凯斯有什么区别?
在 Elixir 编程语言中,有两个相似的结构cond
和case
. 两者都类似于来自其他语言的switch
orselect
语句
两者cond
都case
在此页面上进行了描述
macros - 如何命名宏,使其看起来像 Elixir 中的常量?
在 Erlang 中,我们可以定义一个像-define(TIME, 60 * 60).
And 这样的宏,从宏的调用中?TIME
我们可以准确地知道它们是宏。
然而,在 Elixir 中,宏的调用看起来像函数调用。我们不能轻易地区分宏调用和函数调用。
那么,有没有一种方法可以命名一些像常量一样的宏?
mnesia - 我们是否有内置机制可以在 Elixir 中启动 Mnesia?
似乎我们只能通过键入来启动 Mnesia iex --erl "--mnesia dir '~/doc/'" --name mynode
。
我们可以在不向erl传递参数的情况下启动它吗?
elixir - Weber 快速启动项目构建失败
我遵循了Weber Quick start,但该命令mix deps.get && mix compile --all --force && ./start.sh
导致以下输出:
对于如何解决这个问题,有任何的建议吗?
function - 创建新的保护子句
在 Elixir 中,我将如何为函数创建新的保护子句?显然,我已经看到您不能只在when
语句中调用任何函数,但是能够执行以下操作会很好: