Elixir 由 Erlang OTP 提供支持,它使用 Mix 作为构建工具来创建和运行应用程序。
我现在正在作为初学者学习长生不老药
我可以通过指定mix new sample从命令行创建 mix 应用程序, 并在其中编写一些代码来学习 elixir 和 mix 的基础知识。
可以使用命令mix run sample.exs运行exs和ex文件
我正在尝试编写代码来获取特定类型的数字,例如特定范围 (100000,20000) 之间的质数
我想将这两个数字 (100000,200000) 作为混合运行命令的参数,如mix run sample.exs 100000,200000并获得给定范围内的结果。
注意 - 我不想使用 escript 构建和可执行文件,只需要使用 mix run 命令而不是mix run -e
如何获取 args 作为 exs 文件中的输入值?
非常感谢
我有
>> 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)
但我找不到类似获取“索引”值的函数
这是发送请求的前端代码 - 注意参数的顺序:
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 存储库上创建问题要好。这样模式匹配可以吗?
我有一个地图列表,这是我从查询数据库中获得的。它有一个日期时间字段,我想将其转换为另一个地图列表,其中日期时间字段转换为其相应的纪元值。
我拥有的:
[
%{
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) 我喜欢管道,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) 我需要创建一个 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命令吗?也许有一些库可以帮助我解决这个问题。不幸的是,到目前为止我还没有找到这样的库。我会很感激你的帮助。
我想像下面的 SQL 一样用 ecto 计算 2 列值
SELECT goal, assist, (goal + assist) as point
FROM game
Run Code Online (Sandbox Code Playgroud)
我想添加带有目标+辅助列的点列。请给我一个建议。
我有两个数组:
arr1 = [1,2,3]
arr2 = [2,3]
Run Code Online (Sandbox Code Playgroud)
什么是检查来自所有值最方便的方法,arr2包含arr1。
我有一个端点check,200如果请求包含有效的则返回响应auth_token,401否则返回。
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) 我有一个函数可以将输入字符串散列到一个带有数字的列表中,然后将它放在一个结构中。
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)