标签: elixir

Elixir中是否有转置功能?

嗨,我在Elixir中寻找转置功能.例如,我有这种数组a,在调用函数后,结果应为b:

a = [[1, 2], [3, 4], [5, 6]]
b = transpose(a)
b => [[1, 3, 5], [2, 4, 6]]
Run Code Online (Sandbox Code Playgroud)

elixir

9
推荐指数
3
解决办法
1793
查看次数

Elixir中的集成测试 - 如何从单元测试中过滤掉

我想从Elixir中的单元测试中分离出集成测试.我发现Elixir mix文档有一个关于过滤器的部分,并描述了我想要做的事情.

然后将下面的行添加到appdir/test/test_helper.exs中

# Exclude all external tests from running  
ExUnit.configure exclude: [external: true]
Run Code Online (Sandbox Code Playgroud)

那么一个标签如何测试为"外部"?

testing elixir

9
推荐指数
1
解决办法
1410
查看次数

如何限制凤凰​​城某些路线的访问?

我有一个小凤凰应用程序,允许用户登录并查阅他们的个人资料.我使用了以下简单路线:

resources "/users", MyApp.UserController
Run Code Online (Sandbox Code Playgroud)

但这允许每个用户通过:index操作查看用户列表,以及删除或更新任何用户.

限制访问管理员的最简单方法是什么?我应该在每个动作前加一张支票吗?或者我应该创建一个"/admin"可以处理这些操作的资源?推荐的方式是什么?

elixir phoenix-framework

9
推荐指数
1
解决办法
3853
查看次数

Elixir错误"erlang error :: guard_expr"

iex控制台上,我发现以下错误,我不确定我做错了什么...

case %{} do
  x when x == %{} -> true
  _x -> false
end
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

** (ErlangError) erlang error: :guard_expr
Run Code Online (Sandbox Code Playgroud)

另外,我想解释一下我是如何找到这个的.我试图让我自己||看的灵药的实现,改变它来治疗宏[],{}%{}falsenil. https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/kernel.ex#L2313

这是实现(它有同样的问题):

defmodule Or do
  defmacro left || right do
    quote do
      case unquote(left) do
        x when x in [false, nil] or x == [] or x == {} or x == %{} ->
          unquote(right)
        x ->
          x
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

带走or …

elixir

9
推荐指数
1
解决办法
161
查看次数

Elixir中的双下划线功能

有一些双下划线函数__before_compile__,在Elixir中编译时自动调用.但是,我也看到了许多双下划线__functions__,似乎没有神奇的要求.例如,在Ecto中,调用以下函数

    Ecto.Schema.__source__(source),
    Ecto.Schema.__fields__(fields),
    Ecto.Schema.__assocs__(assocs),
    Ecto.Schema.__primary_key__(primary_key_field),
Run Code Online (Sandbox Code Playgroud)

什么是合格的__functions__,有双重下划线?

ps:在jose的回答之后将'methods'重命名为'functions'.方法是一个oop术语,在这里不合适.

elixir

9
推荐指数
1
解决办法
468
查看次数

在没有Ecto的情况下使用Phoenix Framework

我正在开发一个带有由Phoenix支持的Web界面的应用程序,我正在探索当前SQLite(及其Ecto驱动程序)的替代存储方法(是的,我听说过PGSQL,不,我不愿意使用它.)

我想使用LevelDB和H2LevelDB,它在Github上有一个Erlang驱动程序

然而,在编译时我意识到Phoenix似乎很依赖Ecto,即使在负责渲染eex模板的模块中也是如此.我发现有点可怕,有点奇怪,同时有点烦人.那么,从预先生成的文件中盲目地清除对Ecto的所有引用是否安全,或者我应该为我的Web UI切换到其他内容?

elixir leveldb ecto phoenix-framework

9
推荐指数
1
解决办法
4258
查看次数

Elixir和Ecto中的DateTime.now

我想在没有第三方库的情况下获得Phoenix/Elixir的当前日期时间戳.或者简单地说,我想要类似的东西DateTime.now().我怎样才能做到这一点?

elixir ecto phoenix-framework

9
推荐指数
2
解决办法
7040
查看次数

如何获取客户端的IP地址?

我需要获取客户端的IP地址,这不起作用:

  def create(conn) do
    ip_address = conn.inet.ip_address
    # ....
Run Code Online (Sandbox Code Playgroud)

由于key :inet not found in: %Plug.Conn.我怎样才能获得IP地址呢?

elixir phoenix-framework

9
推荐指数
2
解决办法
3983
查看次数

Elixir中的变量赋值

我对Elixir中的变量赋值有疑问.在Erlang中,这会引发no match of right hand side value:

X = 4.
X = 2.
Run Code Online (Sandbox Code Playgroud)

但是,Elixir似乎完全可以为变量赋值不止一次.我很困惑模式匹配在Elixir中是如何工作的.Elixir如何区分模式匹配和变量赋值?根据我的理解,在Erlang中,它X是一个未绑定的变量,因此它可以与任何东西匹配,对吗?但是一旦绑定,模式匹配只有在与它相同的值时才有效X.那么Elixir与Erlang没有共享相同的未绑定变量概念吗?

erlang elixir

9
推荐指数
1
解决办法
885
查看次数

提取管道中元组的第二个元素

我希望能够在管道中提取元组的第N项,而不使用with或以其他方式分解管道.Enum.at除了元组不是枚举这一事实外,它会完美地工作.

这是一个激励人心的例子:

colors = %{red: 1, green: 2, blue: 3}
data = [:red, :red, :blue]
data 
|> Enum.map(&Map.fetch(colors, &1))
|> Enum.unzip
Run Code Online (Sandbox Code Playgroud)

这回来了{[:ok, :ok, :ok], [1, 1, 3]},假设我只想提取[1, 1, 3]

(对于这种特殊情况,我可以使用,fetch!但对于我不存在的实际代码.)

我可以补充一下

|> Tuple.to_list
|> Enum.at(1)
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,不需要从每个元组创建一个临时列表?

pipeline tuples elixir

9
推荐指数
1
解决办法
5025
查看次数

标签 统计

elixir ×10

phoenix-framework ×4

ecto ×2

erlang ×1

leveldb ×1

pipeline ×1

testing ×1

tuples ×1