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,我想知道这三个实现是否真的是一个选择问题,或者是否有一些与性能或其他方面相关的最佳实践,换句话说,是否有一个最佳实践 我的第一个实现是第三个(…我知道),但是如果我必须选择,我会选择第二个。第一个对我来说似乎很奇怪,因为我定义了3次函数 谢谢 我想知道这三个实现是否真的是一个选择问题,或者是否有一些与性能或其他方面相关的最佳实践,换句话说,是否有一个最佳实践 它们之间的一个重要区别是,第一个和第三个实现是,而第二个实现不是。这意味着第二个实现将使用O(n)内存在n元素

Elixir代码重构

我在Phoenix应用程序中有以下视图: defmodule TattooBackend.Web.API.V1.AccountView do use TattooBackend.Web, :view alias TattooBackend.Repo def render("my_account.json", %{account: account}) do account = account |> Repo.preload(:studio) studio =

Elixir 自定义混合任务在运行时不触发编译

我有一个定制混音任务。但是,它工作得很好,在调用它时不会像其他混合任务那样触发编译。我可以手动运行编译,但这非常令人沮丧,因为我几乎总是忘记这样做,并且在我意识到为什么我看不到我的更改之前,必须运行任务一两次 这是“我的”任务,我遗漏了什么 defmodule Mix.Tasks.Return do @moduledoc """ Task for processing returns """ use Mix.Task require Logger alias Return

Elixir 安装长生不老药-我只是得到崩溃

我正试着用长生不老药做我的第一个“你好世界”。第一步就是在我的Macbook上安装它。我正在做: brew更新 brew安装长生不老药 之后我可以做: erl--版本 Erlang/OTP 19[erts-8.3][source-d5c06c6][64位][smp:4:4][async threads:10][kernel poll:false] Eshell V8.3(使用^G中止) 1> 但是当我试图得到长生不老药版本 长生不老药--version {“init终止于do_boot”{

对Elixir Lang中的列表元素进行排序

我有一个字符串列表,我想用两种方式排序 按字母顺序 按字符串长度 要按字母顺序对字符串列表排序,只需使用,它将按默认顺序对项目排序(即字符串的字母顺序) 要按不同的属性(如字符串长度)对列表进行排序,可以使用,它将mapper函数作为第二个参数。然后,这些值将根据应用于每个元素的该函数的结果进行排序 iex> Enum.sort_by(["b", "aaa", "cc"], &String.length/1) ["b", "cc", "aaa"] 你说没有循环是什么意思?排序操作

Elixir 如何查看HTTPoison的原始请求

我正在尝试使用HTTPoison提交此表单 使用以下代码: HTTPoison.post!(url,{:multipart, [{"username", "user"}, {"password", "pass"}]}) 但是,生成的页面提供“无效身份验证”。但是,当我尝试使用相同的凭据使用浏览器登录时,它会起作用 所以我想知道是否可以通过HTTPoison查看原始http请求,以便将其与来自浏览器的原始请求进行比较。如果您只想查看请求,那么访问http://httpbin.org?它回显请求

Elixir GenEvent和#x27;s handle_call和handle_事件?

请看下面我的答案,了解我发现的差异,并告诉我这些差异是错误的还是更多的差异。谢谢。我在长生不老药上看到的不同 handle\u call必须返回应答,handle\u event不必返回应答 在我看来,事件用于更改状态,调用用于获取状态。处理事件可以通过使用同步通知进行同步。不同之处在于,handle\u call将调用事件管理器中的一个特定事件处理程序,handle\u event将在所有事件中为每个事件调用。因此,假设我notify一个事件{:custom\u event,1},模块中定

Elixir 长生不老药管道,如果是新变量,can管道,can';t管道如果直接发送到管道,为什么?

我有一个嵌套模型,想做一些基本的管道。我的最终目标是为以下参数删除id==“”中的任何嵌套映射: params=%%{“name”=>“outerrmodelname”,“InnerModel”=>%%{“0”=>%%{“id”=>“2”},“1”=>%%{“id”=>“3”},“2”=>%%{“id”=>“}}} 要删除id==“”以下管道工程: blanksRemoved = params |> Map.update! "InnerModel", f

Elixir 在模块中存储变量

我原以为这是一个非常基本的问题,但在网上搜索后,我找不到解决办法 我想把一个变量存储在某个地方,然后在函数中引用它 我想解决的问题如下: 我执行HTTP请求以获取API的accesstoken。此令牌仅在一段时间内有效,我只想在旧令牌过期时获取新令牌。 我需要此令牌来执行其他请求。 所以我必须将令牌和它的有效时间存储在某个地方,以便在其他函数中访问它,在这里我可以访问其他请求。我最近也经历过类似的事情,它看起来应该很简单的原因是因为我试图使Elixir像一种面向对象的语言一样工作。要做到这一点,

如何用elixir搜索和替换文件中的值?

我有一个文件,其中我需要用其他一组值更改一些特定的值。什么是长生不老药 e、 g 现在,如果我想用elixir更改第5行的some language的值,我怎么用elixir呢 我还想用love更改like的值 如何在elixir中做到这一点?您可以使用逐行读取文件并将这些行处理为可枚举。您可以使用逐行读取文件并将这些行处理为可枚举。尝试使用laravel elixir替换插件:尝试使用laravel elixir替换插件:但这将改变所有位置的值。我们只需要在第5行中更改它。您需要添加globa

Elixir 如何设置一个EXTO变更集,以防止丢失必需字段的模型被保存?

根据菲尼克斯的文件: 插入(exto.Schema.t | exto.Changeset.t,Keyword.t):{:好, exto.Schema.t}{:错误,exto.Changeset.t} 插入模型或变更集 在给定模型的情况下,该模型将转换为具有 作为变更集一部分的所有模型非虚拟字段。这一转变 通过直接调用exto.Changeset.change/2完成 在给定变更集的情况下,将合并变更集中的变更 使用模型字段,并将所有字段发送到数据库 如果在中注册了\u insert之前或之后的任

Elixir 长生不老药-如何获得列表中除最后一个之外的所有元素?

假设我有一个列表[1,2,3,4] 如何从该列表中获取除最后一个之外的所有元素?因此,我将使用[1,2,3]我的解决方案(我认为这不是一个干净的解决方案,但它很有效!) 像这样使用Enum.drop/2: list = [1, 2, 3, 4] Enum.drop list, -1 # [1, 2, 3] 除了前面提到的list |>Enum.reverse |>tl |>Enum.reverse之外的另一个选项是Erlang函数,根据文档,该函数速度较慢,但创建的垃圾较少,因为它不

Elixir 为什么凤凰/长生不老药/二郎崩溃?

这不是内存不足错误,不知道为什么它会崩溃。erl_crash.dump显示: Slogan: Kernel pid terminated (application_controller) ({application_start_failure,myapp,{{shutdown,{failed_to_start_child,'Elixir.Myapp.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.Endp System ver

为什么在Elixir中所有的异常都不是建立在同一个模型上?

在加载和评估文件(主要用于配置加载)时,我遇到了几种可能引发异常的错误: 文件不存在。加载错误{file:…,消息:…} 如果配置文件中存在某种语法错误,可以得到: %SyntaxError{description:…,file:…,line:…}或 tokenmissingeror{description:…,file:…,line:…} 不幸的是,这些异常(xxxErrors)不是使用相同的参数生成的:errordescription有时包含keydescription,有时包含ke

Elixir 长生不老药&x2B;健忘症:如何读取属性?

我正在尝试使用此十六进制软件包: 以下是我的模式: use Amnesia require Logger require IEx defdatabase Database do deftable User, [{ :id, autoincrement }, :device_identifier, :match_history], type: :ordered_set, indices: [:device_identifier] do @type t :: %User{ id: non

外胚层+;Elixir:如何更新哈希映射字段?

我有一个用户模型,其匹配字段为:map类型。我试图在控制台中更新它,但它不起作用: iex(16)> changeset = User.changeset(u, %{ matches: %{ "123": true } }) #Ecto.Changeset<action: nil, changes: %{}, errors: [], data: #VideoChat.User<>, valid?: true> iex(18)> VideoChat.Repo.

在Phoenix/Elixir中向结构添加字段

我想向从操作返回的结构添加字段或键: def show(conn, _) do my_struct = Repo.get(MyStruc, 123) render(conn, my_item: Map.put(my_struct, :aaa, "fdsfdsfds")) end 我只需要“show”中的字段。 错误: key :aaa not found in: MyStruc {__meta__: .......... 我可以将其作为单独的值返回,但我希望将其嵌入MyStruc

Elixir 1.4.2已安装,但Elixir-v显示1.3.2。Can';不要用凤凰1.3制作新项目

我试图在终端中运行mix phx.new,以启动新的phoenix 1.3项目,但收到错误消息: ** (Mix) Phoenix v1.3.0-rc.1 requires at least Elixir v1.4. You have 1.3.2. Please update accordingly 在获得新版本之前,我运行了brew install elixir,再次尝试并获得: Warning: elixir-1.4.2 already installed 然而,我运行了elixir-v

Elixir 选择映射中的EXTO子查询错误

我在select语句中引用了这个问题()来创建子查询,但是我得到了这个错误 应为映射,获取:{%ZB.JournalEntry{meta:#exto.Schema.Metadata 这是我的代码,我遗漏了什么吗?如果我不使用select语句,代码工作正常 journal_entries = from entry in JournalEntry, select: { entry, (fragment("(SELECT sum(amount) FROM journal_entry

什么是npm安装的等价物——用hex保存在elixir mix中

是否有一个与npm安装--save(保存)等效的方法,用于将十六进制模块快速添加到mix.exs 我知道粘贴十六进制模块引用的功能如下: defp deps do [ {:asn, "~> 0.2.1"}, {:mix_docker, "~> 0.3.0"} ] end 应该没什么大不了的,但我已经习惯了传统 npm install --save xyz 模块下载并安装在packages.json配置文件中。非常方便 不,没有

Elixir String.replace在Enum.reduce中引发运行时错误

我试图调用String.replace,在这个Elixir代码中,它从structs列表中获取其值,但它只会导致运行时错误 string.replace函数的字符串参数都已打印出来,看起来一切正常。为什么会这样 这是造成错误的原因: 这是完整的代码: defmodule ParamStruct do defstruct键:“”,值:“”,默认值:“”,说明:“参数说明”,标签:“web表单上的标签”,必填项:false,顺序:99 终止 defmodule TemplateStruct d

Elixir 如何测试推送结果而不是回复的凤凰频道?

我有一个phoenix频道,它在中的句柄之后在句柄信息上推送结果,而不是立即回复(请不要问为什么,我有一个用例)。下面的例子与我的情况类似 def handle_in("topic", %{"param" => param}, socket) do ... do something here ... send self(), %{:on_topic, result} {:noreply, socket} end def handle_info({:on_topic

Elixir 在创建%MyStruct{}后实现回调

在Elixir中,我希望在数据结构创建时强制验证它。为了实现这一点,我假设强制调用一个回调函数,该函数刚创建数据结构,如果该数据结构有效,则返回该数据结构,或者返回一个错误元组 实施的方法是什么 如果我声明一些行为,比如ValidatedStruct,并在结构的模块中实现回调,那么在调用代码中返回新结构之前,我如何在结构初始化时强制调用它?您可以通过一个函数创建结构,您可以将该函数命名为new,并从中调用验证方法在那里 例:(未经测试) 您可以通过一个函数创建结构,您可以将该函数命名为new,并

Elixir 长生不老药火柴?不';在模块中不工作

然而,iex中相同的比较产生了相反的结果 defmodule CompareMaps do def match do map = %{a: 2, b: 3, c: 4} test = %{a: 3} match? test, map end end CompareMaps.match true match?/2是一个宏,它的第一个参数是一个模式,而不是一个值。在第一个代码段中,您正在测试模式test是否与map的值匹配,因为test是一个标识符,并且将与任何值

Elixir Graphql苦艾酒长生不老药基于权限的可访问字段

定义并非所有用户都可以访问的字段的正确方法是什么 例如,普通用户可以查询用户并找到其他用户的句柄,但只有管理员用户可以找到他们的电子邮件地址。用户类型将其定义为字段,但可能无法访问。对于普通用户可以看到的内容,是否应该有一个单独的类型?你如何定义它 抱歉,如果这还不清楚,我只是没有足够的词汇。编辑:注意:不同意这种方法。小心使用。无论你在哪里需要一个私人领域,你必须包括适当的中间件 使用 下面是一些代码如何做到这一点。在本例中,经过身份验证的用户可以看到电子邮件地址。匿名用户不能。您可以调整逻辑

Elixir Date.diff/2未定义或为私有

我是Elixir新手,尝试运行Elixir文档中的一些脚本,测试日期结构得到了一个奇怪的结果,因为 Date.compare(~D[2016-04-16],~D[2016-04-28])正在返回:lt 当尝试运行Date.diff(~D[2016-04-16],~D[2016-04-28])时,出现此错误 (UndefinedFunctionError) function Date.diff/2 is undefined or private (elixir) Date.diff(~D[2016

Elixir String.to_atom生成和atom,其中包含双引号

我有一段代码,我使用一对列表得到一个映射,其中一个列表是键,另一个列表是值。非常直接的代码: defp create_data_map(columns, row) do Enum.zip(columns, row) |> Enum.into(%{}, fn {k, v} -> {String.to_atom(k), v} end) end 我从csv文件中获取这些列表,其中列是第一行,这是标题列表,第二行是其后的任何一行。下面是标题的外观: ["action",

我如何看待Elixir中的序列生成器?

我需要生成这样的序列: [1,3,5,7,9,13,17,21,25,31,37,43,49,57,65,73,81] (本例中为17个数字) 算法是: [1,(先前+2),(先前+2),(先前+2),(先前+2),(先前+4),(先前+4),(先前+4) 所以第一个4个项目为+2,接下来的4个项目为+4,接下来的4个项目为+6。每四个项目增加2个增量 我可以用Ruby做一个快速的黑客版本: def sequence incr = 0 (0..16).each.inject([]) d

Elixir Guardian DB初始设置(MyApp.Repo.insert/1未定义)

我正在尝试将guardian 0.14和guardian_db 0.8与长生不老药/凤凰一起使用。但是,我在钩子中不断遇到以下错误: [error] #PID<0.983.0> running Api.Endpoint terminated Server: localhost:4000 (http) Request: POST /api/login ** (exit) an exception was raised: ** (UndefinedFun

Elixir fsm和Exactor需要很长时间才能做出响应

我目前正在使用Nadia、fsm和Exactor构建聊天机器人。我试图将每个用户的对话建模为一个有限状态机,以引用每个用户当前处于的每个状态,并使用缓存在用户聊天id和他们使用的fsm的相应pid之间进行引用 我的设计基于 下面的代码段创建了pid,但每当我尝试转换到下一个状态(轮询)时,它就会被卡住 我根据在 但是get_user_info函数并没有导致速度减慢 这是一个使用iEx的示例 iex(1)> alias TelegramBot.FsmServer TelegramBo

Elixir 在GenServer中保存大型映射,这是一个有效的用例吗?

这是否是GenServer的有效用途: 如果进程id是用户id并且是唯一的。该过程包含通过数据库生成的大数据图的查询结果。现在,如果100%的用户登录到系统并要求提供他们的数据地图,那么他们都会保存在自己的流程中,该流程由唯一的用户id引用 因此,在请求映射时,我将检查是否有一个具有用户_id(即进程id)的进程,并获取它并将其反馈给用户,如果没有,则创建它并将其置于新状态 现在,如果用户更新了他的地图,在更新时,我会确保更新状态或创建一个新的状态 感谢您的指导如果您的genserver只存储地

Elixir Phoenix模板从数组中获取图像url

我有一个这样的对象数组 [%{id:1,url:'image.jpg'},%{id:2,url:'image2.jpg'}] 我的凤凰模板看起来是这样的 您只需将/预先添加到url即可使其与静态路径一起工作。我假设列表中有一个双引号字符串,就好像你有一个单引号一样,你会得到一个不同的错误。要在/之前添加,请更改: static_path(@conn, item.url) 到 静态路径(@conn,“/”item.url) 您的对象数组不是有效的长生不老药术语。请更正。代码在我看来很好。你得到

如何在Mac上安装elixir dev版本

我使用brew install elixir在Mac上安装elixir。它适用于目前发布的版本v1.5.2。如何在Mac上安装像Elixir>=1.6.0-dev这样的开发版本 使用docker-您可以将mix项目装载到docker容器中以运行mix/iex。以下是Dockerfile示例: 使用版本管理器,例如 kiex安装主机 从vscode使用elixir ls工具时,使用kiex的好处是可以跳转到std库函数的源代码,请参见,因为您已经在使用自制软件,安装最新开发版本的最简单方法是使用

如果Elixir中的变量是不可变的,为什么可以附加到元组和列表中?

在下面的示例中,我创建了一个列表,然后在该列表中添加了一个新值。如果长生不老药都是关于不变性的,这怎么可能呢 l = [1,2,3,4] iex> [1,2,3,4] l = l ++ [5] iex> [1,2,3,4,5] 如果我没有弄错的话,这是将列表重新分配给同一个列表,这应该是不可能的,当我再次调用l时,它应该打印出1到4,而不是1到5。我不明白什么?当您为变量指定一个新值时,实际上是创建了一个同名的新变量 首先,当您执行l++[5]时,不会向l追加任何内容,因为

Elixir 凤凰伞应用程序未热加载代码

我在Phoenix伞形应用程序中重新加载代码时遇到问题 我的雨伞由两个应用程序组成:app和app_web。app_web中的任何更改都会按需要重新加载,但我无法在app中的代码中实现同样的功能 我应该从哪里开始查找呢?我猜您正在运行mix phx.server来自apps/app\u web。这是伞形项目的常见陷阱,您需要从伞形项目的根目录启动服务器,以便重新加载代码才能正常工作。感谢您的帮助!由于此问题,我实际上无法从根目录运行phx.server。我将使用phoenix head版本,直到

Elixir 如何在没有其他模式的情况下呈现具有多条记录的表单

我需要创建一个表单,用户可以同时编辑多个纸张记录。现在我正在使用一个嵌入式模式,以便Exto可以为我进行转换: defmodule EmbSchema do embedded_schema do has_many :papers, Paper end def changeset(emb_schema, attrs) do emb_schema |> cast(attrs, []) |> cast_assoc(:papers, with:

Elixir 电子计算机中的虚拟模型

有没有一种方法可以在EXTO中定义虚拟模型。没有迁移文件的和不会在数据库中持久化。我在EXTO文档中没有找到任何与此相关的文档。我需要这个来测试iex中的一些功能。使用与应用程序其余部分分离的模型进行测试 我找到了嵌入的模式,其中包含的字段不存在于数据库中,但与模型无关 任何帮助都将不胜感激。嵌入式模式很好 defmodule Test.Model do @moduledoc~S”“” 未存储在数据库中的虚拟测试模型。 """ 使用exto.Schema 导入外部变更集 @类型t::exto.S

Elixir ExDoc:使用专用存储库获取源链接

我正在尝试为我的项目生成文档 我已经将{:ex\u doc,“~>0.16”,only::dev,runtime:false}添加到我的deps,将source\u url设置到我的存储库并运行mix docs 我正在使用Github Enterprise,所以我的设置如下:source\u url:https://my.private.repo/adam/projname“ 但是,在生成的文档中,指向源代码的所有链接都直接指向https://my.private.repo/adam/projn

Elixir 变更集更改中不包括EXTO架构默认值

考虑以下模式: defmodule EctoBug.Post do use Ecto.Schema import Ecto.Changeset schema "posts" do field :title, :string, default: "test" timestamps() end def changeset(post, attrs) do post |> cast(attrs, [:title]) |> va

如何在Elixir中的同一文件中加载其他模块之前加载模块?

我正在尝试实现Protobuf的一些特性,我有一个例子:一个模块需要在编译时调用另一个模块。它们在同一个文件中,很难确保它们的顺序 defmodule FakeProtobuf do defmacro __using__(opts) do quote do # register_attribute fields and set fields @before_compile FakeProtobuf end end defmacro __bef

Elixir 自从不推荐使用Ecto.DateTime以来,如何创建新的DateTime?

我目前有一个日期和一个时间,我真的想把它合并成一个日期时间结构 在Ecto 3之前,您可以使用Ecto.DateTime.from_date_和_time执行此操作,但在新文档中,由于Ecto类型已被弃用,因此我找不到等效的函数 该函数当前看起来像: def add_datetime(date_as_string) do (_, date = Date.from_iso8601(date) end_time = #T[23:59:59] datetime = datetime_add(E

Elixir 无法编译依赖项:jiffy

我正在尝试运行混合服务器: ... Compiling c_src/decoder.c sh: 1: exec: cc: not found ===> Hook for compile failed! ** (Mix) Could not compile dependency :jiffy, "/home/user/.mix/rebar3 bare compile --paths "/home/user/app_build/_build/prod/lib/*/ebin"" command

Elixir 如何在字符串类型上编写协议?

我正在尝试为字符串类型编写协议: defprotocol MyString do def from(data) end defimpl MyString, for: String do def from(string) do String.replace(string, ",", "-") end end 这是可以编译的,但是当我尝试调用字符串上的MyString.from时,我得到 iex> MyString.from("foo,") protocol MySt

Elixir 在EXTO中的“属于”关联中引用复合密钥?

我试图将一个实体建模为仅附加,另一个子实体引用第一个实体。因此A的结构类似于(按DESC处插入的排序): (id,version)构成A的主键(也可以执行(id,inserted_at),但开发人员认为版本号更容易阅读) 现在B属于A,每个B都将与A的一对(id,version)对应 | id | a_id | a_version | column | inserted_at | |------|-------+-----------+---------+-------------| |

以这种方式动态调度Elixir

我想创建一个带有实现的函数,我将嵌入到其他模块中,而不必在那些模块中重新实现它。大概是这样的: defmodule MyModuleWithFunction do def my_function(m) do IO.puts("***my name: #{__MODULE__}. My current value: #{m.var1}") end end # usage 1 defmodule M1 do def var1 do "M1 var1" end

上一页 1 2 ...  21   22   23   24    25   26   27  ... 下一页 最后一页 共 125 页