Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Elixir_IT技术博客_编程技术问答 - 「Fatal编程技术网」

如何在Elixir中将函数作为参数传递?

如何将一个函数指定为Elixir中另一个函数的参数?例如,将foo传递给bar,以便bar可以调用foo。调用函数和接收函数的语法是什么?使用&Module.function/arity传递它,使用(…)调用它 例如: def my_hof(f) f.([1, 2, 3], &(&1 * 2)) end my_hof(&Enum.map/2) 那么私有函数呢?在同一模块中使用&函数/arity

Elixir警告:从不使用默认参数

我有以下长生不老药功能: defp prod(a, b\\0) do a*b end 在编译时,我得到警告: warning: default arguments in prod/2 are never used 为什么它认为默认值不会被使用 编辑:这里是要点,如果您想查看整个过程,它将警告您,如果您从未在该模块中使用单个参数调用prod,则不会使用默认参数。我假设您在某处使用prod(someA,someB)调用prod,但我知道,这是完全有意义的。谢谢如果您能告诉我我是否正在编写

有没有办法注释掉Elixir函数中的代码行

有没有办法注释掉函数中的一行或几行代码 类似于下面的内容 defmodule MyModule def foo do //a = "old code" a = "new code" end end 或 Elixir中的注释(在可以用作脚本语言的语言中很常见)使用磅符号 defmodule MyModule def foo do # a = "old code" a = "new code" end end 从形式上讲,无法使用多行注释,但多行字

Elixir:带点和嵌套模块的模块名-它们等效吗?

以下代码是否等效?至于调用模块方法,在这两种情况下,都将使用Utilities.StringUtils.some_方法(…) 嵌套模块 defmodule Utilities do defmodule StringUtils do end end 名称中带有点的模块 defmodule Utilities.StringUtils do end 是的,两者都被精确地转换为符号(在Erlang中,模块由其符号引用): :“Elixir.Utilities.StringUtils” E

按Elixir中的结构类型从列表中获取元素

我有一个params映射,想得到“type”是%Plug.Upload{}的值列表。如何在Elixir中检查类型?您可以像在映射上一样在结构上进行模式匹配,因此可以使用Enum.filter和Kernel.match?: params |> Enum.filter(&match?(%Plug.Upload{}, &1)) params是一个映射,因此Enum.filter会获取键/值对,而值就是Plug.Upload,因此: params |> Enum.filte

验证Elixir Exto中的存在,但仅在插入或更新时

要验证参数的存在,可以向模型中的required\u fields模块属性添加字段。然后将其传递给模型的cast方法,该方法验证该字段是否存在 但是,如果您只想验证插入或更新时是否存在某些内容,该怎么办 例如,我只想验证如果记录没有持久化,用户的密码是否存在。换句话说,我不希望用户在编辑其帐户信息时必须提供密码 我想到的最好的方法是有两组不同的必填字段用于更新和插入,然后让一个方法选择合适的字段: 变更集方法中的# 强制转换(参数、必填字段(模型)、@可选字段) defp必填字段(型号)do 如

Elixir 是否禁用日志获取/phoenix/live\u重新加载/socket/websocket?

运行phoenix(v1.0.4)每隔几秒钟控制台就会显示一条消息: [info]获取/phoenix/live\u重新加载/socket/websocket 如何禁用此功能?这让在IEx工作很不愉快 dev.exs中有一个config:logger函数,但我不知道如何隔离此消息。Logger的elixir文档提到了定制后端。我可以看看这个,但也许凤凰内部有一些东西 我发现phoenix的其他记录消息很有用。实时重新加载记录器默认已关闭一段时间。您确定没有覆盖UserSocket中的日志级别设置

Elixir 我应该如何在phoenix中使用Exto实现回调?

如果回调将被弃用,而Multi还没有实现,我应该怎么做?您可以在变更集中调用“callback”函数。例如,如果您有一个用于创建需要生成标识符GUID的产品的变更集,那么您可能已经通过回调实现了这一点 defmodule Product do before_insert :generate_identifier defp generate_identifier(changeset) do ... end end 现在,您可以在变更集函数中调用它,这更显式 defmodul

Elixir 如何在Phoenix框架中使用单独模型中的选项和值创建选择标记

我有一个相对简单的表单,带有一个select标记(下拉表单字段) “选择”标记的选项/值是动态的,应在更新“我的类别”模型时更新 这是我现在得到的: 表单通过web/templates/posts/new.html.eex模板呈现,如下所示: <%= render "form.html", changeset: @changeset, action: project_path(@conn, :create) %> 但我得到了以下错误:

Elixir 具有不同密钥访问的映射

使用定义为原子或字符串的键在地图上进行匹配的最佳实践是什么 %{"artist" => artist, "track" => track, "year" => year} vs 功能需要在以下两个方面匹配: def duplicate_post(%{"artist" => artist, "track" => track, "year" => year}) do ... end 我能想到的最好的方法是定义函数两次,每种输入一次,然后从另一个调用其中一个

Elixir 如何在长生不老药中使用'select'?

Ruby有select和reject——对于Elixir中的可枚举项,如果给定函数返回true,如何返回所有元素?关键字是什么?在“长生不老”中,对应的select的功能是filter/2 因此,使用filter/2而不是select, 和reject/2与ruby中的相同 有关正式文件,请参阅: 过滤器/2: 拒绝/2:(过滤器的对面): 在Elixir中,select的相应功能是filter/2 因此,使用filter/2而不是select, 和reject/2与ruby中的相同 有关正式文

Elixir 体外循环嵌套预压

我试图在EXTO中编写一个嵌套查询,从post表中预加载注释,然后在一个单独的查询中为每个注释预加载用户。这看起来像: post = Repo.preload(Repo.get(Post, id), [:comments]) comments = Repo.preload(post.comments, [:user]) 问题是,当我知道有一种方法可以在一个查询中加载我需要的所有数据时,它会在数据库上运行3个不同的查询 这与join:assoc()有关吗?我不认为通过一个查询就可以做到这一点,据

Elixir 什么';s是<&燃气轮机;操作人员

出于好奇:在Elixir中,我们如何称呼(二进制连接)操作符?它通常被称为菱形操作符,尤其是在Java世界中。您也可以在perl中找到它 您也可以在其他语言(如SQL、VBA或VisualBasic)中找到它,但它没有特殊的名称(在那里它只是被称为notequal)。我想在Elixir中,它只是连接操作符我不认为有一个特定的名称。我翻阅了一本编程长生不老药的书,书中并没有说它有一个特定的名字。 它是elixir中的联接运算符之一。它连接两个二进制文件。“二进制连接”运算符 资料来源: 在Ja

为什么Elixir Guardian(DB)在查找令牌时遇到问题?

我很难理解guardian是如何工作或处理错误的,所以在本例中,我只是尝试注销并在控制台上获取错误 代码: def delete(conn,_参数)do {:好的,claims}=Guardian.Plug.claims(conn) 康涅狄格州 |>Guardian.Plug.current_令牌 |>卫报,撤销!(索赔) 康涅狄格州 |>render(“delete.json”) 结束 不知何故,即使删除了会话,也找不到令牌,用户已注销。 我调试代码时遇到问题。 如何更好地查找错误或调试代码

Elixir Ecto变更集中的转换错误

我有以下型号(用于聊天室)在使用变更集时遇到问题: defmodule Elemental.TxChat.Room do use Elemental.TxChat.Web, :model schema "rooms" do field :name, :string # Foreign key indicating which user created this room # One user can create any number of rooms

Elixir 为guardian配置设置密钥-Phoenix

我第一次用phoenix应用程序设置guardian。我用守护者配置中的密钥遇到了一个路障。我不知道在哪里保存密钥以及如何准确生成密钥?我基本上是从自述文件中复制和粘贴的,我确信这是不正确的,但我似乎找不到关于这个问题的像样的文档。下面是我在尝试从数据库创建与用户的会话时遇到的问题 erlang错误:{:不受支持,[“p-521”,:HS512]} 这是我当前的配置文件,显然是错误的 config :guardian, Guardian, issuer: "PerriAir",

Elixir 在函数模式匹配中使用存储在模块属性中的映射值

考虑到模块属性是在编译时解析的,我认为以下两行对是等效的,但是第二行生成了一个无法调用远程函数的错误。我试图做的是使用包含映射的模块属性作为enum。然后我想在函数中对enum的一个值进行模式匹配 @my_guard "bar" def foo(@my_guard), do: "bar" @my_map %{guard: "bar"} def foo(@my_map.guard), do: "bar" 您可以按以下方式定义函数,它将正常工作: def foo(unquote(@my_

Elixir:最多向字符串追加k次

在命令式语言中,我们可以使用for循环将最多k次附加到字符串 str = "" k=5 for i=1 to i=k: str = str + "a" 上述代码将生成一个长度为kaaaaa的字符串。现在,elixir中没有任何for/while循环,唯一的方法似乎是递归。我想知道是否还有其他琐碎的方法可以达到同样的效果。这样的事情可能吗 In range(1..k) |> Enum.join(a,"") 实现这一点有多种方法,包括列表理解,但使用似乎是一个很好的选择 字

Elixir实用程序函数,用于根据索引和大小从列表返回子列表

在Elixir中是否有任何实用函数,我想从中根据索引和大小从数组中获取子列表 枚举实用程序不提供此功能 arr = [1,2,3,4,5,6,7] from=2 size=3 res = sublist(arr,from,size) #res should return [3,4,5] 您可以这样使用: [1,2,3,4,5,6,7] |> Enum.slice(2, 3) [3, 4, 5] Enum.slice([1,2,3,4,5,6,7], 2, 3) [3, 4, 5] 或

Elixir 将列表中的字符串转换为原子

因此,我在地图中有一个字符串列表,如下所示: %{select => ["status_id", "first_name"]}. [:status_id, :first_name]. 我想将其转换为列表中的原子,如下所示: %{select => ["status_id", "first_name"]}. [:status_id, :first_name]. 使用类似于: String.to_existing_atom 但该函数只接受一个参数,而不是一个列表 我找不到

Elixir 列表附加在大小写匹配中不起作用?

我试图根据匹配情况更新两个列表,但列表一直为空 test_list = [] other_list = [] Enum.map(some_maps, fn some_map -> case some_map do %{"test" => item} -> test_list ++ [item] %{"test2" => item} -> other_list ++ [item] end end) 我还尝试了test\u list++item

添加stripity_stripe 2.0后,elixir依赖项解析失败

我有一个伞形项目,我试图将stripity_stripe 2.0添加到我的项目中,但“hackney”版本与项目中的版本冲突。我得到 Failed to use "hackney" (versions 1.7.1, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.1) because deps/bamboo/mix.exs requires ~> 1.7 ex_aws (version 2.0.2) requires 1.6.3 or 1.6

Elixir GenServer';即使vsn在连续的热代码升级中被修复为最后一个版本,仍然再次调用了s code_change?

无法成功安装第二个升级版本。从下面的错误日志中,似乎再次调用了代码更改函数,并且错误地处理了状态 复制步骤 我遵循《编程灵丹妙药>=1.6》一书第20章OTP.Applications中的示例和步骤 提交时,我已将应用程序准备为0.2.0版本 提交时,server.ex中的状态已更新,需要运行代码更改。我可以成功地将代码热升级到0.3.0 在以上两个步骤之后,如果我只是更改server.ex中的next\u number函数中的返回文本,并将版本升级到0.3.1,例如,保持步骤2中的code

Elixir 长生不老药案例陈述

我写了一份声明如下: case length(clicks) do 0 -> date_list = [] 1 -> date_list = start_date _ -> date_list = Interval.new(from: start_date, until: end_date) |> Enum.to_list end 似乎日期列表从未设置过。我做错了什么?您在cas

Elixir Jason使用元组编码结构

我有一个已经有@derivate Jason.Encoder的结构,但该结构中的某些字段是元组,因此无法对该结构进行编码,我如何修复该问题:/ 更新 我使用了下面提到的方法来实现协议。关于这种方法需要注意的一件重要事情是,它将改变整个项目的编码,只是要小心 查看文档,了解如何实现encode/2功能: 作为实现的一部分,您需要决定如何对元组进行编码,因为它在JSON中没有模拟。数组可能是最简单的选项,因此您可以使用mytuple |>Tuple。要使用列表如果您确实需要将Tuple编码为列表类型

Elixir 在异位迁移中读取html文件

我正在尝试从我的priv/repo/templates读取html文件,并将其作为字符串值插入到表中: def change do consultant_engagement_html = File.read!(Application.app_dir(:enterprise, "priv/repo/templates") <> "/consultant_engagement.html") execute "INSERT INTO rapid_contract_template

Elixir 为什么运行local.phx会降低phoenix存档的级别?

根据,运行mixlocal.phx应该升级phoenix项目生成器。相反,它将其降级。这是预期的行为吗?为什么? $ mix phx.new -v Phoenix v1.4.8 $ mix local.phx Found existing entry: /home/me/.mix/archives/phx_new-1.4.8 Are you sure you want to replace it with "https://

Elixir File.rm!can';t删除File.mkdir创建的目录

只是尝试删除一个目录。由于非所有者错误,无法执行此操作 iex(1)> File.mkdir "testing" :ok iex(2)> File.rm! "testing" ** (File.Error) could not remove file "testing": not owner (elixir) lib/file.ex:1128: File.rm!/1 iex(2)> File.rm! "testing/" ** (File.Error) could no

Elixir Enum.filter(除一个元素外)

从这个列表[23,23,35,46]我想排除23并获取[35,46],所以我尝试了 Enum.filter([23,23,35,46],fn x -> x != 23 end) 我得到了“#.作为输出,为什么这不起作用x!=23是有效的布尔值 当这起作用时 Enum.filter([23,23,35,46],fn x -> x == 23 end) #[23,23] “#”的含义是什么?您可以这样做,因为您在第一个示例中期望的输出是35和46,但由于它们在ASCII范围内,因此它

Elixir 如何在使用preload时检查未定义的值,并使用EXTO不返回值

我正在和外星人一起做凤凰框架 我编写了以下代码 query = from m in Member, where: m.member_id == ^member_id, preload: [:assoc1, :assoc2, :assoc3] Repo.all(query) 当所有预加载的assocs都有相关的DB值时,它就工作了 但是,当预加载的assocs没有相关值时,它将返回null。 它导致错误函数ni

在elixir项目(elixirLS.projectDir)中保存文件时出错

使用VisualStudio代码保存elixir文件时出现以下错误 在项目中找不到mixfile。要使用子目录,请设置 elixirLS.projectDir在您的设置中 因此,我更新了User/settings.json(在windows中)文件,如 { "elixirLS.projectDir": "C:\\CodeTraining\\Elixir-intro" } 但我还是得到了错误 有什么想法吗 顺便说一句,我在使用Ubuntu时也有同样

Elixir 我如何垃圾收集长生不老药REPL,iex?

在python中,如果我在玩REPL,我可以使用import-gc强制垃圾收集;gc.collect()。如何使用Elixir'siexREPL实现同样的效果 大变量绑定之前的示例: 因此,使用了大约700米的RAM和300米的交换 将大数据绑定到变量xx后(从数据库中获取500个时间序列,每个时间序列包含7000个结构): 所以现在大约2.2G用于500米交换。现在将xx重新绑定到一些小的内容: 但使用的内存并没有真正改变。仍然有2.2G内存和500米左右的交换空间。但是,如果我退出IE

Elixir 如何在Phoenix framework Router中使用资源更改参数名

是否有一个选项可以使此-> resources "users", MyApp.UserController 生成参数名不是:id的路径 在以下位置使用param参数: 这将生成以下路由: GET/users=>:索引 GET/users/new=>:new POST/users=>:创建 GET/users/:name=>:show GET/users/:name/edit=>:edit 修补程序/用户/:名称=>:更新 PUT/users/:name=>:update DELETE/use

将贴图与Elixir中的数组值合并

你好,我有这个数组 temp=[%{“a”=>1},%{“b”=>2}] total=%{“c”=>3,“d”=>4} 如何将临时值添加到总计中,以 total=%{“a”=>1,“b”=>2,“c”=>3,“d”=>4}您可以使用total作为列表中所有值的初始值 Enum.reduce(temp, total, fn (map, acc) -> Map.merge(acc, map) end) 返回: %{"a" => 1, "b" => 2, "c" => 3,

Elixir 添加当前用户';将信息发送到Phoenix Framework中的帖子

我从Rails搬到Phoenix,遇到一个我找不到答案的问题 我已经设置了用户身份验证(通过在私有身份验证函数中检查@current\u user) 我还有一个Post-model/controller/view(用于熟悉的w-Rails的脚手架) 我想在提交表单时自动用@current_用户ID填充一个Post字段(每个Post将属于一个用户),而不需要用户填写表单字段 在Rails中,这非常简单。。。类似的内容添加到post controller的创建操作中: @post.user = cu

Elixir 如何在没有早午餐的Phoenix API应用程序中提供robots.txt

我有一个只支持Phoenix JSON API的应用程序,它是用--无早午餐创建的,不提供静态内容 我看到机器人试图抓取我不存在的robots.txt,并呈现500.json api视图时出错,导致Phoenix.Template.HTML.encode\u to\u iodata时出现异常尝试对JSON进行编码 有没有更好的方法可以在不进行静态资产编译的情况下为robots.txt提供服务,这样我就可以避免这些错误,最好是不允许对API进行爬网?只需将以下内容添加到您的lib/my_app/e

Elixir 如何转换以下地图/列表?

如何将Elixir中的[1,“A”],[2,“B”]转换为[1:“A”,2:“B”] 曾经试过看模式匹配,理解,都没能搞清楚 谢谢 下面是一种转换字符串的方法 [[1, "A"], [2, "B"]] |> Enum.map(fn [key, value] -> {String.to_atom(to_string(key)), value} end) 多亏了当您想要将整数作为键时,最好使用映射。 此代码将像%{1=>“A”,2=>“B”}一样返回映射 a=[[1,“a

使用Elixir了解命名函数

我正在写一个函数,它看起来应该工作得很好。但我想我错过了长生不老药的核心。以下是我想做的: defmodule ProjectEuler do def solve(limit) do multiple_of_3_or_5? = fn(n) -> (rem(n, 3) == 0 || rem(n, 5) == 0) end for(n <- limit, multiple_of_3_or_5?.(n), do: n) |> Enum.reduce(0, fn(

如何在Elixir中为postgres连接设置应用程序名称

下面config.exs中的代码将postgresql中的应用程序名称设置为“myapp”。如何改用Elixir节点名称?(此处使用Kernel.node会导致参数错误) 您可以使用v2.1.0中添加到EXTO的init/2回调。下面的代码应该可以工作(但我还没有测试它)。您需要在使用exto.Repo,… def init(_, config) do {:ok, put_in(config, [:parameters, :application_name], Node.self |>

Elixir 预加载通过关联有多个

如何通过关联预加载一个有多个的文件 安装程序 priv/repo/seeds.exs {:ok, invoice1} = Shop.Accounting.create_invoice(%{number: "1", issued_on: "2017-01-01"}) {:ok, invoice2} = Shop.Accounting.create_invoice(%{number: "2", issued_on: "2017-01-01"}) {:ok, invoice3} = Shop.Acco

Elixir 递归加载所有子类别

我想预加载所有类别子类别 例如: -> Sport -> Football -> Man -> Woman -> Handbal -> Man -> Woman 到目前为止,我只预加载了第一个孩子这里是我正在使用的代码: schema "categories" do has_many :subCategories, Category, foreign_key: :p

Elixir 更新深嵌套映射中的单个值

我有这张地图: %{ __meta__: #Ecto.Schema.Metadata<:loaded, "questions">, __struct__: MyApp.Question, active: true, description: "player points", id: 118, inserted_at: ~N[2018-08-26 19:48:22.501445], reserved: %Statcasters.Questions.Reser

Elixir 向后移植信号并使其与变量一起工作

所以我刚开始使用Elixir,看到当前的master添加了对~U[2015-01-13 13:00:07Z]符号的支持,以创建/解析UTC日期 代码如下: defmodule MySigils do defmacro sigil_U(datetime_string, modifiers) defmacro sigil_U({:<<>>, _, [string]}, []) do Macro.escape(datetime_from_utc_iso8601

Elixir “的目的是什么?”;“主模块”;在新的混合项目创建期间?

据我所知(我可能是错的,因为我是Elixir的新手),你可以选择创建一个包含多个.ex文件的应用程序混合项目,每个文件中都有多个模块。它们可以通过别名、导入等相互使用 如果是这种情况,“主模块”在创建过程中的用途是什么,隐式(大写项目名称)或显式(如,mix new…--module) PS:我知道描述需要在mix.exs中指定一个主模块,但这不是我在问题中所指的(或者我是吗?)。据我所知,这只是在新项目中有一个经过测试的示例模块。但是,很多时候,将此“主模块”作为其他Elixir代码与应用程序

Elixir 如何获得任何链接进程的崩溃通知?

我通过Supervisor、Dynamic Supervisor在我的应用程序中启动多个(genserver)进程,有时只是直接启动链接。当我使用iex-S mix启动应用程序时,其中一些应用程序可能会崩溃而不让我知道。如果我自己没有捕捉到任何进程的崩溃,如何确保我收到来自任何进程的所有崩溃通知?在跟踪所有事件的同时,“让进程崩溃”的良好实践是什么 XXX.start_link(ws_uri, __MODULE__, state, [{:name, MyModule}]) 从: 如果回调(in

上一页 1 2 ...  72   73   74   75    76   77   78  ... 下一页 最后一页 共 125 页