标签: elixir

Elixir - 混合运行示例与参数

Elixir 由 Erlang OTP 提供支持,它使用 Mix 作为构建工具来创建和运行应用程序。

我现在正在作为初学者学习长生不老药

我可以通过指定mix new sample从命令行创建 mix 应用程序, 并在其中编写一些代码来学习 elixir 和 mix 的基础知识。

可以使用命令mix run sample.exs运行exsex文件

我正在尝试编写代码来获取特定类型的数字,例如特定范围 (100000,20000) 之间的质数

我想将这两个数字 (100000,200000) 作为混合运行命令的参数,如mix run sample.exs 100000,200000并获得给定范围内的结果。

注意 - 我不想使用 escript 构建和可执行文件,只需要使用 mix run 命令而不是mix run -e

如何获取 args 作为 exs 文件中的输入值?

非常感谢

erlang elixir-mix elixir

0
推荐指数
2
解决办法
5580
查看次数

如何获取elixir中列表元素的索引?

我有

>> list = ["a","b","c"]
Run Code Online (Sandbox Code Playgroud)

我需要获取元素的索引并创建一个新列表

>> list_2 = [[1,"a"], [2,"b"], [3,c]]
Run Code Online (Sandbox Code Playgroud)

创建我使用的新列表

lista = Enum.flat_map(list, fn x -> [index,x] end)
Run Code Online (Sandbox Code Playgroud)

但我找不到类似获取“索引”值的函数

indexing element list elixir

0
推荐指数
2
解决办法
4280
查看次数

Phoenix 似乎正在按字母顺序重新排序参数和模式匹配 - 这正常吗?

这是发送请求的前端代码 - 注意参数的顺序:

params = {ticket_guid: "XXX-XXX", user_name: "David", quantity: 2}
$.get('/init_stripe_transaction', params, function(data) {
Run Code Online (Sandbox Code Playgroud)

这是浏览器开发控制台中的“错误请求”数据,显示了参数的顺序:

http://localhost:4000/init_stripe_transaction?ticket_guid=XXX-XXX&user_name=David&quantity=2
Run Code Online (Sandbox Code Playgroud)

这是终端(服务器端)的错误响应,即phoenix elixir def logs。注意 - 由于某种原因,参数的顺序现在如何更改:

[info] GET /init_stripe_transaction
[debug] Processing with DiceWeb.TransactionController.create_stripe_session/2

Parameters: %{"quantity" => "2", "ticket_guid" => "XXX-XXX", "user_name" => "David"}
Pipelines: [:browser]
[info] Sent 400 in 357ms
[debug] ** (Phoenix.ActionClauseError) no function clause matching in DiceWeb.TransactionController.create_stripe_session/2 
Run Code Online (Sandbox Code Playgroud)

这就是我在控制器中进行模式匹配的方式:

def create_stripe_session(
  conn, 
  %{ticket_guid: ticket_guid, user_name: user_name, quantity: quantity}
) do ...
Run Code Online (Sandbox Code Playgroud)

额外参考:我对长生不老药/模式匹配很陌生。因此,决定堆栈溢出比在 phoenix 存储库上创建问题要好。这样模式匹配可以吗?

elixir phoenix-framework

0
推荐指数
1
解决办法
170
查看次数

在 Elixir 中转换地图列表

我有一个地图列表,这是我从查询数据库中获得的。它有一个日期时间字段,我想将其转换为另一个地图列表,其中日期时间字段转换为其相应的纪元值。

我拥有的:

[
  %{
    m_id: 267,
    end: #DateTime<2020-03-07 17:30:00Z>,
    start: #DateTime<2020-03-07 14:30:00Z>,
    type: "normal",
    s_name: "smum",
    w_id: 256
  },
  %{
    m_id: 267,
    end: #DateTime<2020-03-07 07:30:00Z>,
    start: #DateTime<2020-03-07 04:30:00Z>,
    type: "normal",
    s_name: "smum",
    w_id: 256
  }
]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

[
  %{
    m_id: 267,
    end: 12356789, #some epoch value for eg
    start: 12367576, #some epoch value for eg
    type: "normal",
    s_name: "smum",
    w_id: 256
  },
  %{
    m_id: 267,
    end: 12334567, #some epoch value for eg
    start: 12354767, #some epoch value for eg
    type: …
Run Code Online (Sandbox Code Playgroud)

functional-programming elixir

0
推荐指数
1
解决办法
66
查看次数

剥离/检查的惯用方法 :ok 和管道第二个 arg

我喜欢管道,Elixir 喜欢管道,但返回 {:ok, actual_return_value} 似乎也很常见。有没有用管道处理这个的习语?

我现在正在学习“Programming Elixir”,以下练习的解决方案可能是可能的,但不完整。

File.cwd()
|> IO.puts()
Run Code Online (Sandbox Code Playgroud)

我不是在寻找这个解决方案:

{:ok, ret} = File.cwd()
IO.puts(ret)
Run Code Online (Sandbox Code Playgroud)

elixir

0
推荐指数
1
解决办法
208
查看次数

Elixir - 进行 DNS 查询(使用 dig 命令)

我需要创建一个 DNS 请求并获得响应。我在 Linux(Ubuntu) 中运行此命令以发送请求并获得响应:

dig +nocmd google.com txt +noall +answer
Run Code Online (Sandbox Code Playgroud)

回复:

google.com.             3400    IN      TXT     "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com.             100     IN      TXT     "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com.             100     IN      TXT     "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com.             3400    IN      TXT     "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com.             3400    IN      TXT     "v=spf1 include:_spf.google.com ~all"
Run Code Online (Sandbox Code Playgroud)

我可以在 Elixir 中使用dig命令吗?也许有一些库可以帮助我解决这个问题。不幸的是,到目前为止我还没有找到这样的库。我会很感激你的帮助。

elixir

0
推荐指数
1
解决办法
147
查看次数

如何使用 ecto 计算 2 列值

我想像下面的 SQL 一样用 ecto 计算 2 列值

SELECT goal, assist, (goal + assist) as point
FROM game
Run Code Online (Sandbox Code Playgroud)

我想添加带有目标+辅助列的点列。请给我一个建议。

elixir ecto phoenix-framework

0
推荐指数
1
解决办法
71
查看次数

Elixir:检查数组是否包含另一个数组的所有值

我有两个数组:

arr1 = [1,2,3]
arr2 = [2,3] 
Run Code Online (Sandbox Code Playgroud)

什么是检查来自所有值最方便的方法,arr2包含arr1

arrays contains elixir

0
推荐指数
1
解决办法
577
查看次数

在 Elixir 中编写以下逻辑的惯用方法是什么?

我有一个端点check200如果请求包含有效的则返回响应auth_token401否则返回。

def check(conn, _) do
  if auth_token = get_session(conn, :auth_token) do
    send_resp(conn, 200, "")
  end

  send_resp(conn, 401, "")
end
Run Code Online (Sandbox Code Playgroud)

这在auth_tokenis的情况下工作正常nil,但是,对于定义它的情况,我收到了一个奇怪的错误。

[error] Ranch listener AppWeb.Endpoint.HTTP had connection process started with :cowboy_clear:start_link/4 at #PID<0.6370.0> exit with reason: {:function_clause, [{:cowboy_http, :commands, [{:state, #PID<0.5887.0>, AppWeb.Endpoint.HTTP, #Port<0.1651>, :ranch_tcp, :undefined, %{env: %{dispatch: [{:_, [], [{:_, [], Phoenix.Endpoint.Cowboy2Handler, {AppWeb.Endpoint, []}}]}]}, stream_handlers: [Plug.Cowboy.Stream]}, "", %{}, {{127, 0, 0, 1}, 61063}, {{127, 0, 0, 1}, 4000}, :undefined, …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

0
推荐指数
1
解决办法
149
查看次数

您可以从管道中的 elixir 结构中提取数据吗?

我有一个函数可以将输入字符串散列到一个带有数字的列表中,然后将它放在一个结构中。

def hash_input(input) do
  hexList = :crypto.hash(:md5, input)
        |> :binary.bin_to_list
  %Identicon.Image{hex: hexList}
end
Run Code Online (Sandbox Code Playgroud)

我想编写一个测试来确保 hexList 中的每个元素都是一个整数,所以我想出了这个:

test "Does hashing produce a 16 space large array with numbers? " do
  input = Identicon.hash_input("løsdjflksfj")
  %Identicon.Image{hex: numbers} = input
  assert Enum.all?(numbers, &is_integer/1) == true
Run Code Online (Sandbox Code Playgroud)

我尝试使用管道运算符(为了我自己的学习)编写测试,但我无法使用模式匹配提取管道中的十六进制属性。

test "Does hashing produce a 16 space large array with numbers? With pipe " do
  assert Identicon.hash_input("løsdjflksfj")
        |> %Identicon.Image{hex: numbers} = 'i want the input to the pipe operator to go here' # How do you extract the …
Run Code Online (Sandbox Code Playgroud)

elixir

0
推荐指数
1
解决办法
279
查看次数