标签: elixir

如何将Elixir元组转换为位串?

我是Elixir的新手,我正在尝试使用STDOUT打印一些东西IO.puts.IO.puts需要chardata.我查看了Elixir文档并没有看到将元组转换为位串的方法.我知道必须有办法做到这一点,但我没有找到任何BIF这样做.

所以我想把它转换成{"foo", "bar", "baz"}:"foobarbaz".

我正在学习Elixir和Erlang,所以这对我来说都是新手.

提前致谢!

types casting tuples elixir

10
推荐指数
2
解决办法
6572
查看次数

仅在Elixir上导入函数时使用或指定arity

我正在研究Elixir,当我从模块导入函数时使用onlyexcept运算符时,我需要指定一个arity数.为什么?

例如

import :math, only: [sqrt: 1]
Run Code Online (Sandbox Code Playgroud)

要么

import :math, except: [sin: 1, cos: 1]
Run Code Online (Sandbox Code Playgroud)

functional-programming elixir

10
推荐指数
2
解决办法
354
查看次数

如何将表格中的大文件上传到凤凰城?

我有一个带有文件字段的HTML表单,用于将文件上传到/file我的Phoenix应用程序中的路由.

我从命令行模仿这种行为,curl -v -F "file=@MyTestFile" http://localhost:4000/file/以便更快地进行测试.

当我使用一个大文件(转折点似乎约为7.7MB)时,我从Plug获得以下异常:

18:40:38.897 [错误]错误在过程<0.420.0>与退出值:{[{原因,#{ ' 例外 '=>真,' 结构 '=>' Elixir.Plug.Parsers.RequestTooLargeError',消息=>零}},{MFA,{ 'Elixir.Plug.Adapters.Cowboy.Handler',INIT,3}},{堆栈跟踪,[{ 'Elixir.Plug.Parsers',减少,如图6所示,[{文件," LIB /插......

是否有解决方法允许上传更大的文件?

:length在Plug中似乎有一个选项关键字,但我怎么能从凤凰城设置它?这个特殊价值8_000_000被选中的原因是什么?

elixir phoenix-framework

10
推荐指数
1
解决办法
3088
查看次数

路由到phoenix-framework中的静态页面

我想为我的网站运行一个带有凤凰后端的angularJS前端.我希望我的根路由将用户引导到包含我的角度客户端的静态目录中的预构建页面,然后使用phoenix运行API.过去我通过路由匹配在轨道上使用ruby来完成此操作:

get '/', to: redirect('/foobar.html')  
Run Code Online (Sandbox Code Playgroud)

有没有办法和凤凰做类似的事情?

elixir phoenix-framework

10
推荐指数
1
解决办法
2059
查看次数

如何在Elixir中重写Erlang组合算法?

过去几周我一直在修补Elixir.我刚刚在Erlang中遇到了这个简洁的组合算法,我尝试在Elixir中重写但是卡住了.

Erlang版本:

comb(0,_) ->
  [[]];
comb(_,[]) ->
  [];
comb(N,[H|T]) ->
  [[H|L] || L <- comb(N-1,T)]++comb(N,T).
Run Code Online (Sandbox Code Playgroud)

Elixir版本我提出了这个,但它不正确:

def combination(0, _), do: [[]]
def combination(_, []), do: []
def combination(n, [x|xs]) do
  for y <- combination(n - 1, xs), do: [x|y] ++ combination(n, xs)
end
Run Code Online (Sandbox Code Playgroud)

示例用法,结果不正确:

iex> combination(2, [1,2,3])
[[1, 2, [3], [2, 3]]]
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的指示?

谢谢!
肖恩

erlang functional-programming elixir

10
推荐指数
1
解决办法
918
查看次数

Elixir is_range守卫没有定义?我该怎么用?

我想用一名is_range()后卫.例如:

def foo(bar) when is_range(bar) do
    # stuff
end
Run Code Online (Sandbox Code Playgroud)

is_range不存在?我正在使用Elixir 1.0.5

我试过了

def foo(bar) when Range.range?(bar) do
    # stuff
end
Run Code Online (Sandbox Code Playgroud)

但这也行不通.

我该怎么办?

elixir

10
推荐指数
1
解决办法
675
查看次数

如何在Elixir for Enum.map中传递arity 2的函数作为参数?

假设我有类似的东西:

    Enum.map(list, fn(x) -> String.duplicate("a", someValue * x) end)
Run Code Online (Sandbox Code Playgroud)

但相反,我想将String.duplicate/2函数作为参数传递,以简化我的代码:

Enum.map(list, &String.duplicate/2)
Run Code Online (Sandbox Code Playgroud)

我知道你可以为arity 1功能做到这一点:

Enum.map(list, &String.downcase/1)
Run Code Online (Sandbox Code Playgroud)

谢谢!

enums functional-programming function elixir arity

10
推荐指数
1
解决办法
5344
查看次数

如何更新Ecto中的关系?

我有这样的订阅.

defmodule Rebirth.Subscription do
  use Rebirth.Web, :model

  schema "subscriptions" do
    ...
    belongs_to :user, Rebirth.User
    ...
  end

  ...

  def update_user(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
    |> cast_assoc(:user, required: false)    
  end
end
Run Code Online (Sandbox Code Playgroud)

我想将用户与订阅相关联

所以我试过了

Rebirth.Subscription.update_user(subscription, %{user_id: 1})
Run Code Online (Sandbox Code Playgroud)

要么

Rebirth.Subscription.update_user(subscription, %{user: user})
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到以下错误:

** (ArgumentError) unknown assoc `user` in `cast_assoc`
Run Code Online (Sandbox Code Playgroud)

如何更新user_id?

谢谢!

elixir ecto phoenix-framework

10
推荐指数
1
解决办法
3418
查看次数

Elixir Pry无法执行私有方法?

elixir的pry可以在模块中运行私有方法吗?例如:

defmodule Test do
  require IEx

  def foo do
    IEx.pry
  end

  defp bar do
  end
end
Run Code Online (Sandbox Code Playgroud)

此时呼叫bar不起作用.我对elixir很新,有什么我做错了或者为什么这是不可能的?

elixir pry

10
推荐指数
1
解决办法
710
查看次数

Erlang中的进程/消息和Smalltalk中的对象/消息有什么区别?

我试图了解Smalltalk中的对象/消息与Erlang中的进程/消息之间的区别。我阅读了有关该主题的以下文章

据我了解,在Smalltalk中,所有事物都是一个对象,并且所有事物都具有相同的“对象/消息”抽象-即使数字1是只能通过消息传递才能到达的对象。是1在Erlang / Elixir中进行的过程吗?Erlang中的所有内容是否都是对消息/程序范例的响应?您可以向Erlang中的号码发送消息吗?

非常感谢。

oop erlang smalltalk message-passing elixir

10
推荐指数
1
解决办法
113
查看次数