edxofp
September 28, 2021, 4:55pm
1
Hello friends
I have a code like the one below
defmodule Test do
def send(receptor, template, token, token2 \\ nil, token3 \\ nil, token10 \\ nil, token20 \\ nil) do
params = %{
"receptor" => receptor,
"token" => token,
"token2" => token2,
"token3" => token3,
"token10" => token10,
"token20" => token20,
"template" => template
}
IO.inspect(params)
end
end
Test.send("111", "222", "333", "444")
out
%{
"receptor" => "111",
"template" => "222",
"token" => "333",
"token10" => nil,
"token2" => "444",
"token20" => nil,
"token3" => nil
}
How can I change token10?
I want to print this as well as I entered, I first introduced token2 and then token10 but it is arranged in the output
Thanks
edxofp
September 28, 2021, 4:59pm
2
You can see this example in php
Named arguments
function Test(string $receptor, string $template, string $token, string $token2 = null, string $token3 = null, string $token10 = null, string $token20 = null)
{
$params = [
"receptor" => $receptor,
"token" => $token,
"token2" => $token2,
"token3" => $token3,
"token10" => $token10,
"token20" => $token20,
"template" => $template,
];
print_r($params);
}
Test(receptor:"111", template:"222", token:"333", token10:"444");
out
Array
(
[receptor] => 111
[token] => 333
[token2] =>
[token3] =>
[token10] => 444
[token20] =>
[template] => 222
)
Maps are not ordered. If you need to maintain order of keys then you need to look at a keyword list in elixir, which are much closer to PHP using arrays to fake maps.
1 Like
edxofp
September 28, 2021, 5:11pm
4
It is true
And how do I give “444” to token10?
in php:
Test(token10:"444")
Thanks
If you can deal with atom keys instead of strings, you can do something like this:
defmodule Test do
def send(receptor, template, token, opts \\ []) do
params = [
receptor: receptor,
token: token,
token2: opts[:token2],
token3: opts[:token3],
token10: opts[:token10],
token20: opts[:token20],
template: template
]
IO.inspect(params)
end
end
Test.send("111", "222", "333", token10: "444")
which outpus
[
receptor: "111",
token: "333",
token2: nil,
token3: nil,
token10: "444",
token20: nil,
template: "222"
]
2 Likes