如何睡觉/等待一秒钟?
我能找到的最好的东西是这样的(在iex中):
IO.puts "foo" ; :timer.sleep(1); IO.puts "bar"
Run Code Online (Sandbox Code Playgroud)
但是我的两个看法都没有延迟.
我目前正在学习Elixir,通过在elixir-lang网站上浏览OTP和混合教程,我很难找到如何从shell中重新编译和重新加载项目.
在Erlang中我会这样做make:all([load]),它会编译并加载发生的任何更改.然而,iex总是说:up_to_date,这确实有意义,因为Elixir使用mix来满足它的编译需求.
我在iex中找不到任何等价物.
我是Elixir的新手,但它有很多乐趣!
我来自Ruby世界,所以开始看起来比喻.并且存在调试工具pry.使用binding.pry我可以中断任何会话.我在Elixir找到了类似的东西 - IEx.pry.但是当我通过测试时,它不起作用ExUnit.
问题 - 是否可以中断测试会话并使用当前环境运行iex?
我试图把握之间的差异列表和元组在Elixir.从Elixir指南的基本类型部分,我理解:
好的,这一切都很好,但我仍然不确定什么时候使用.我看到大多数方法返回一个元组但是其他地方都使用了Lists,并且许多方法接受Lists作为输入,而不是元组.根据上面提到的要点,不应该使用元组来传递数据,因为从用户给定值的元组中读取会很快吗?
我也注意到元组不是可枚举的,那是什么呢?不会使用Enum它们比在列表中使用它更快吗?
如果有人可以帮助我更好地理解它们,可能通过举几个例子说明什么时候使用,那就太棒了.
在Phoenix路由器中是否有可以充当通配符的路由?
在elixir 1.2中,他们已经包含了关键字"with",但它并不完全清楚它是什么.
我将如何以及在何种情况下使用它?
我刚刚开始使用Elixir.我正在使用ExUnit编写一些测试,用于我自己实现的简单的Enumerable函数,而不使用标准的Enum模块.
在我的测试中,我发现每当我引用列表时[7, 8, 9],一旦它在stdout中打印,我就会看到char列表'\a\b\t'.为什么会发生这种事情?
我正在玩模式匹配,我发现,将方法的匹配参数与空映射进行模式化并不容易.我认为它会是这样的:
defmodule PatternMatch do
def modify(%{}) do
%{}
end
def modify(map) do
# expensive operation
%{ modified: "map" }
end
end
Run Code Online (Sandbox Code Playgroud)
但似乎第一个函数子句匹配任意映射:
iex> PatternMatch.modify(%{a: "map"})
==> %{}
Run Code Online (Sandbox Code Playgroud)
还有另一种检查空地图的方法吗?