标签: elixir

如何过滤地图中的相似值?

我有一个简单的地图,我想过滤具有相似值的地图

输入

%{a: 1, b: 1, c: 2}
Run Code Online (Sandbox Code Playgroud)

搜索值为1

输出

%{a: 1, b: 1}
Run Code Online (Sandbox Code Playgroud)

elixir

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

在函数 def 中,多个子句以公共匹配开头

以下代码来自nx项目、nx/nx/type.ex文件。

为什么第一行存在,它没有函数体并且条件总是匹配?我找不到相关的 Elixir 参考文档。

def infinity_binary(type)
  def infinity_binary({:bf, 16}), do: <<0x7F80::16-native>>
  def infinity_binary({:f, 16}), do: <<0x7C00::16-native>>
  def infinity_binary({:f, 32}), do: <<0x7F800000::32-native>>
  def infinity_binary({:f, 64}), do: <<0x7FF0000000000000::64-native>>
Run Code Online (Sandbox Code Playgroud)

elixir

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

当函数名以“!”结尾时

考虑一下Application.fetch_env!/2。\n!函数名以 结尾的特殊含义是什么?

\n
defp db_host do\n  Application.fetch_env!(:my_app, :db_host)\nend\n
Run Code Online (Sandbox Code Playgroud)\n

elixir

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

获取累积列表的更好方法?

我的目的是将列表转换[1,2,3,4][1,3,6,10](累积列表),并在模块中找到相关函数Enum

我的代码如下,请问如何改进?

  def create_accum_list(list) when is_list(list) do
    {_, list_a} =
      List.foldl(list, {0, []}, fn x, {sum, acc} ->
        a = x + sum
        {a, [a | acc]}
      end)

    Enum.reverse(list_a)
  end
Run Code Online (Sandbox Code Playgroud)

elixir

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

esbuild 失败:单词意外(需要“)”)

我正在为我的 Elixir 应用程序准备一个 Docker 镜像。我用于esbuild资产编译。 esbuild使用作为npm包安装。

Dockerfile:

# copy umbrella app
COPY ./apps/gpanel ./apps/gpanel

...

# compile assets
RUN mix assets.deploy
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

# copy umbrella app
COPY ./apps/gpanel ./apps/gpanel

...

# compile assets
RUN mix assets.deploy
Run Code Online (Sandbox Code Playgroud)

elixir esbuild

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

如何处理进程'消息队列溢出?

我是Elixir的新手,之前我从未遇到过这个问题.我很好奇处理这类问题的最佳或可接受的方式是什么?

spawn是一个从websocket接收数据的进程,然后将send这些数据传回给父进程.父运行一个递归process()函数,该函数receive来自生成的进程.

process函数与数据匹配,并且在大多数情况下运行回调函数.由于它处理数据,因此该回调函数可能位于较重的一侧.

通过删除大量Logger.info语句,我能够发现生成的进程从websocket接收数据并将send此数据传递给父进程,父进程实际上并没有处理邮箱.

我使用该alive?/1函数确定父进程是活动的,后来我使用该函数检查了邮箱的状态Process.info/1- 它显示邮箱消息的数量正在增长(数百条消息).

我的工作解决方案是,而不是在process函数中调用回调spawn,我相信它允许父进程更快地处理其邮箱.

处理这种情况的其他更好的方法是什么?

def run(url, callback) do
    {domain, path} = parse_url(url)
    socket = Socket.Web.connect!(domain, path: path, secure: true)
    spawn_link(Project.WebsocketClient, :listen, [url, socket, self])

    process(callback)
end

def process(callback) do
    receive do
        {:ok, data} ->
            callback.(data)
            # spawn(fn -> callback.(data) end) - my fix.
        {:ping} ->
            Logger.info("Pong")
        {:error, _, url} ->
            run(url, callback) …
Run Code Online (Sandbox Code Playgroud)

elixir

-1
推荐指数
1
解决办法
664
查看次数

在Phoenix中使用自定义SQL代码生成迁移

我想Ecto使用自定义SQL代码生成新的迁移,而不是使用提供的帮助程序.当前的mix生成器任务仅处理模型.

如何在迁移中编写原始SQL代码?

sql elixir ecto phoenix-framework

-1
推荐指数
1
解决办法
421
查看次数

从googlemaps JSON响应中提取值

在此输入图像描述 来自googlemap API的我的JSON_Respon给出了

%{ body: body} = HTTPoison.get! url


body = {
   "geocoded_waypoints" : [{ ... },{ ... }],
   "routes" : [{
         "bounds" : { ...},
         "copyrights" : "Map data ©2018 Google",
         "legs" : [
        {
               "distance" : {
                  "text" : "189 km",
                  "value" : 188507
               },
               "duration" : {
                  "text" : "2 hours 14 mins",
                  "value" : 8044
               },
               "end_address" : "Juhan Liivi 2, 50409 Tartu, Estonia",
               "end_location" : {
                  "lat" : 58.3785389,
                  "lng" : 26.7146963
               },
               "start_address" : "J. …
Run Code Online (Sandbox Code Playgroud)

regex erlang elixir

-1
推荐指数
1
解决办法
78
查看次数

需要跳过Elixir中的重复日志

我的Elixir代码中有一个特定的日志语句,应该经常调用它,但是我不想每次都打印该日志语句。可能是我想每5次打印一次。

如果有办法请帮助。它以太快的速度淹没了我的日志文件!提前致谢

logging elixir erlang-otp elixir-framework

-1
推荐指数
1
解决办法
65
查看次数

lix剂中的多个条件修改变量

如何用Elixir编写此Ruby代码?

value = 0
value += 3 if cond1
value += 2 if cond2
value += 8 if cond3
value -= 3 if cond4
Run Code Online (Sandbox Code Playgroud)

elixir

-1
推荐指数
1
解决办法
54
查看次数