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中有一个小管道,它是关于改变exto模型状态的: model |> cast(params, ~w(something), ~w()) |> conditional |> Repo.update 问题是,我有一个条件管道,它有时可能为零,因此在它为零的情况下,它应该什么都不做,并且可以工作(我假设它将是fn(x)->x end) 所以,我的问题是:“我怎么做?” 我不确定你的问题是否正确,但也许这正是你想要的。管道对于不会失败的操作来说是非常好的,而且所有管道

Elixir typespec的类型在括号中由管道操作符分隔,其含义是什么?

我正在向Elm移植一个Elixir库,该库大量使用类型规范,但我很难找到有关所用语法的文档 下面的类型表达式表示什么 @type identifier :: (String.t | MyCustomTypeA.t | MyCustomTypeB.t) 最初,我将它建模为一个元组,但现在我正在查看它的用法,它看起来可能是一个有区别的联合。但是,这个假设的问题是,我在这里没有看到任何支持这些东西的文档()。你是正确的,因为这是一个歧视性的联盟。Elixir和Erlang文档都没有直接指出这一点,但

Elixir Exto,未能将类型更改为jsonb

将列类型修改为jsonb或map时出错。这是我的迁移文件: def change do alter table(:disbursements) do modify :reason, :map end end 我收到如下错误: ** (Postgrex.Error) ERROR 42804 (datatype_mismatch) column "reason" cannot be cast automatically to type jsonb hint:

如何通过本地网络连接两个Elixir节点?

如何通过网络连接连接两台不同机器的两个Erlang/Elixir节点?您必须命名节点并在两个节点上使用相同的cookie 在机器1中: iex --name node1@machine1.com --cookie a_cookie_string 在机器2中: iex --name node2@machine2.com --cookie a_cookie_string 现在这两台机器可以通信了。要测试它,您可以在machine1上执行以下操作: iex(node1@machine1.com)1

如何操作Elixir中枚举字符列表中的单个字符?

假设我想通过组合符(如filter)传递枚举字符列表,以便删除所有a,如下所示: 'abc' |> Enum.filter(fn ch -> ch != 'a' end) 这不会返回预期结果,因为枚举字符实际上是代码点,这里是97、99和99。因此谓词可以表示为ch!=97或!=“a”以实现所需的结果。 在这种情况下,是否有更好、更直观的方式来表达谓词?您可以使用?来表达: iex(1)> 'abc' |> Enum.filter(fn ch -> ch != ?

Elixir Phoenix应用程序中的工作进程队列

我需要PubSub之类的东西,但不是向所有订阅者广播,而是只向1个订阅者发送消息(最好根据接收缓冲区中的消息数自动选择订阅者,越低越好) 我尝试的是使用受控数量的分布式工作者发送数十万个http请求。要解决这个问题,我首先要尝试的是让工作者拉取要发出的请求,而不是将请求推送到他们那里 因此,我有一个全局注册的代理,它保存了http请求的列表,这些请求将通过API来执行,用于添加和检索请求。然后,我将使用worker(Task,…)和one-for-one启动N个工人,而不是在这个阶段添加pool

Elixir 如何将uuid与外部模型一起使用

我正试着用uuid和外星生物。我可以查询所有,但是我得到一个无法用Repo.get编码值的错误 defmodule Rocket.Model do defmacro __using__(_) do quote do use Ecto.Model @primary_key {:id, :uuid, []} @foreign_key_type :uuid end end end defmodule Rocket.User do use

Elixir 我的申请已经启动,但马上就结束了

我不确定我做错了什么,但我已经创建了一个elixir应用程序,如果我使用以下工具运行它: iex -S mix 应用程序加载管理器,管理器加载连接到rabbitmq并一直侦听消息的gen_服务器,但是如果我使用 mix app.start 或 已加载主管,工作进程已启动并连接到rabbitmq,但它立即结束,没有任何错误,示例代码: mix.exs defmodule Sample.Mixfile do use Mix.Project def project do [app

Elixir 使用“时的性能影响”_var";超过_&引用;长生不老药?

在Elixir中,有一个通用规则,可以用\uu来命名任何未使用的变量。这样做会停止任何绑定到该变量的操作 然而,我注意到一种广泛使用的模式,即使用下划线作为前缀来表示被忽略的参数,其形式为\u tail(目的是提供关于变量是什么的提示) 如果您尝试访问\u tail,则该语言会通过shell中的警告鼓励您这样做: 警告:带下划线的变量“\u tail”在设置后使用。前导下划线表示应忽略变量的值。如果有意这样做,请重命名变量以删除下划线 但这里有一个陷阱\u tail将变量绑定到它,而仅使用\u时

有没有办法用Elixir返回函数定义

给我一个模块: defmodule Foo do def bar(baz) do IO.puts baz end end 有什么方法可以让我返回: def bar(baz) do IO.puts baz end 我已经计算出,我可以加载模块的整个定义,包括: Foo.__info__(:compile) |> List.last |> elem(1) |> File.read |> elem(1) 但理想的情况是,我想做一些类似的事情 Foo.b

Elixir ExUnit:测试中的模块不可用

我将遵循本教程: 因此,在我的Elixir项目中,我有一个模块lib/kv/bucket.exs,还有一个测试test/kv/bucket\u test.exs 当我运行混合测试时,我得到以下错误:**(UndefinedFunctionError)undefined function KV.Bucket.start\u link/0(模块KV.Bucket不可用)我缺少什么吗?因此,模块必须使用.ex扩展而不是.exs,您需要运行mix compile来编译新模块。在那之后,mix-test能

Elixir-使用模块作为变量

我正在执行某个函数 MyModule.function() 有没有办法使用这样的函数: a = MyModule a.function() a = MyModule a.function() 是的,您可以这样做:

在这种情况下,如何使用Elixir Stream处理多个项目?

我有一个函数,它解析html主体以获得如下所示的开放图属性 我不知道如何使用流,以便只进行一次解析——这甚至是可能的 def og(body) do image = attribute_content(body, "meta[property=og:image]") title = attribute_content(body, "meta[property=og:title]") site_name = attribute_content(body, "meta[property=og:

Elixir 限制处理器核心计数的使用

如何在elixir应用程序中限制处理器内核数的使用 我知道我可以在erlang中使用+S命令,但我不确定如何使用elixir realm中的该命令。对于iex,您可以执行以下操作: iex --erl "+S 1" -S mix some_task elixir --erl "+S 1" -S mix some_task 要运行长生不老药,您可以执行以下操作: iex --erl "+S 1" -S mix some_task elixir --erl "+S 1" -S mix some

Elixir 复合键,`unique_constraint`问题

我有这样的经历: defmodule N.Repo.Migrations.CreateAuth do use Ecto.Migration def change do create table(:auths, primary_key: false) do add :oauth_id, :string, primary_key: true add :provider, :string, primary_key: true add :user_

Elixir Phoenix中的错误处理

我想区分“未找到页面”和“未找到资源”错误。 是否可以让异常类型执行以下操作 def render("404.json", assigns) do case assigns[:reason] do NoRouteErro -> message = "Route not found" Ecto.NoResultsError -> message = "Resource not found" _ -> message = "Uncaught except

Elixir 使用架构之间的构建关联

我有以下模式: 第一: schema "countries_codes" do # Country code based on ISO-2 field :iso, :string field :name, :string has_many :country, Country timestamps end def changeset(struct, params \\ %{}) do struct

Elixir 长生不老药中的这个别名有什么作用?

如果没有它,我会得到一个没有为Foo实现的exto.Queryable,给定的模块不存在。如何将EXTO查询内容拉入模型?这相当于这样做 alias Bank.Account alias Bank.Customer alias Bank.Deposit alias Bank.Ledger alias Bank.Repo alias Bank.Transfer alias Bank.Entry 当您有多个以相同前缀开头的模块时,此表单仅允许您保存一些击键 至于您的错误,代码可能正在执行以下操作

Elixir 外键:国家/地区id必须与相应的关联名称不同

当我运行mix-ecto.migrate时,我遇到一个错误,(ArgumentError)外键:country\u id必须与对应的关联名称lib/ecto/schema不同。例如:1499:ecto.schema。\uuu属于\uuuu/4 我的目标是在mobiles表中添加两个外键,即conutry_id和country_code。我错过了什么 这是我的手机模式: schema "mobiles" do field :number, :string belongs_to :person,

Elixir 长生不老药:是功能吗

我想用is_function测试一些内置函数,但失败了: 添加=fn a,b->a+b结束 #作用 >是函数加法吗 真的 >is#u函数is#u函数#测试自身 警告:变量“is_function”不存在,正在扩展为“is_function()”,请使用括号删除歧义或更改变量名称 iex:27 如何测试内置函数?您可以使用内核.function\u exported?/3并将模块名、函数名和arity传递给它进行检查: iex(1)> function_exported?(Kernel,

Elixir 长生不老药

我正在学习Elixir,我想实现的一件事是一个简单的pubsub,其中发布者和消费者位于不同的节点,目前不使用Redis之类的工具 我现在正在尝试的是在没有凤凰城的情况下做到这一点。我看了几个选项,其中一个是新的注册表,但它不能远程工作 我尝试的另一个选择是gproc。Node.list()向我显示我的节点,因此集群接缝应该是正常的,但是:gproc.send({:p,:l,:event\u manager},{:message,“stuff”})仍然只在一个节点内工作 我的问题是:有没有什么标

Elixir 完成管道连接后,插头连接会发生什么情况?

我目前正在研究Phoenix,我想知道在完成其插入管道后,插头连接会发生什么情况 conn |> endpoint |> router |> controller |> view 文档说明,render/3函数将调用视图中相应的模板函数,并使用状态代码200响应客户端。但在这之后,连接会发生什么变化?返回是否由任何更高的调用方(例如cowboy适配器)使用,还是管道只是以未使用的打开返回结束?查看,您可以看到连接首先通过适配器发送,然后返回。这是因为还有其他插头可以连接

编译前修改Elixir模块的AST

您好,我想构建一个库,用其他函数调用替换某些函数调用 module A do def wrapper B.foo end end 在编译的程序中,A.wrapper将实际调用B.baz。我已经偶然发现了@before\u compile回调,但似乎不知道如何更改调用模块的AST 所以我得到的只是这个 module A do use Modifier @before_compile Modifier def wrapper B.foo end end

Elixir 凤凰控制器动作重构

我在Phoenix应用程序控制器中执行以下操作: defmodule TattooBackend.Web.API.V1.StudioController do use TattooBackend.Web, :controller alias TattooBackend.Repo alias TattooBackend.Accounts.Account def index(conn, params) do studios = Studio studios =

优化或删除reduce_while call in Elixir的使用

我下面是最近在编译器上销毁所有软件的屏幕广播。所有的示例代码都是用Ruby编写的,但我试图用Elixir实现相同的输出 简单地说,我的方法是这样的: 将代码字符串传递给递归函数(call\u标记器) 循环令牌类型,并使用当前令牌类型运行正则表达式 如果找到匹配项,则将该结果附加到累加器中 结果从字符串的开头开始,并传递剩余的 字符串和累加器调用标记器。另外,:暂停while循环,并返回累积的令牌 如果没有找到结果,继续循环 我已经在Elixir中编写了几个函数,它们的工作原理是从输入中获得预期的

Elixir 如何将生成的随机字符串限制为[0-9a-Z]个字符?

我在Elixir中生成一个随机字符串,如下所示: len = 10 val = :crypto.strong_rand_bytes(len) |> Base.url_encode64() |> binary_part(0, len) 这段代码的输出可以包含连字符和底字符,这是我不想要的。如何将字母表限制为仅[0-9a-Z]字符 我将使用: def模块生成器do @字母枚举concat([?0..9,?A..Z,?A..Z]) def

Elixir 使用“重构案例语句”;加上;声明

我有一个三重嵌套的to case语句。这是一个完全令人憎恶的控制器正在进行的行动 但是,我很高兴我处于这种情况,因为在我看来,最好的学习方法之一就是看到代码在许多不同的方法中做同样的事情。这就引出了这个问题 我如何重构这段代码,使之与语句一起使用,而不是case?我在网上找到的所有例子都比这个例子更微不足道 代码: 我注意到我不能像这样重构: with {:ok, games} <- Nba.get_todays_games, {:ok, game} <- Nba.g

Elixir-更新具有字符串键的地图

如何更新具有字符串键的地图?我想更新“品牌”价值 我的代码(产品是带有“品牌”键的地图): 产出: uri decode: "\"e&ggsssssaaqss\"" json decode: "e&ggsssssaaqss" actual product brand: "%22e%26ggsssssaaqss%22" 它没有更新产品[“品牌”] 实际产品品牌日志应等于更新后的json解码日志 我做错了什么?如果地图有如下字符串键: my_map = %{"a" => 1,

如何在Elixir中基于命令行参数加载配置文件

如何使用提供的命令行标志覆盖Elixir中的配置?例如,通过运行以下命令启动应用程序: ./my_app --mode=mode1 or ./my_app --mode=mode2 根据提供的模式,我想用mode1.exs或mode2.exs覆盖config.exs,如下所示 use Mix.Config # Configures the endpoint config :my_app, env: Mix.env import_config "#{Mix.env}.exs" impor

Elixir 如何在测试文件中引用外部上下文?

我真的很难理解菲尼克斯长生不老药的上下文。我有三个上下文,Auth(包含User.ex)、组(Circle.ex)和内容(ShareMark.ex)。在每个模式中,分别有模式、用户、圆圈和共享标记 我试图弄清楚如何在组上下文之外使用预先提供的创建_圈。在Ruby中是否有类似于上下文的东西 在content\u test.ex中,我试图定义以下内容 @valid_attrs%{circle:Groups.create_circle(%%{name:“我的测试”}),url:“google.com”

Elixir 在Phoenix路由器中使用不带:id的资源宏

默认情况下,resources宏在路由的末尾附加一个/:id,用于对单个资源执行操作 然而,我有一种情况,用户必须始终登录才能对自己执行操作。我更喜欢从conn.assigns获取:当前用户,而不是通过传入/显示URL中的任何参数。我知道我总能一条一条地写出路线。我只是想知道是否有办法让资源生成这样的路径。您可以使用以下选项来实现这一点: 当需要在不引用ID的情况下查找资源时,因为它在给定上下文中只包含一个条目,:singleton选项可用于生成特定于该单个资源的一组路由 用法示例: reso

Elixir 将模块属性作为参数传递给宏

这是长生不老药。我尝试将模块属性作为参数传递给来自不同库(通常定义新模块)的不同宏: def模块X do @数据类型[:x,:y,:z] @另一个常量“某个常量值” defenum数据类型,:类型,@data\u类型 结束 下面是另一个例子 但几乎总是在同一行上出现错误: **(Protocol.UndefinedError)协议枚举未为{:@、[line:26]、{:types、[line:26]、nil}实现 所以我通常会重复这些值: def模块X do @数据类型[:x,:y,:z

Elixir:未使用的变量名,尽管它已被使用

通过mix命令iex-S mix打开交互式shell会出现以下错误: def build_map(script_str) do script_str = String.replace_leading(script_str ")", "") script_str = String.replace(script_str, "false", "111") script_str = String.replace(script_str, "null", "111") sc

Elixir 如何修复';**(ArgumentError)未知注册表:Rover.registry';在Elxir

我一直在学习长生不老药,并试图构建一个类似于火星车卡塔的应用程序 我正在使用GenServer维护现有单个漫游者的单个状态,并在注册表的帮助下尝试生成一个键,即漫游者名称 Rover.ex代码 defstruct [:x, :y, :direction, :name] def start_link({x, y, d, name}) do GenServer.start_link(__MODULE__, {x, y, d, name}, name: RegistryHelper.

使用elixir将枚举转换为流

我有200万个数据文件要处理。 以下代码需要2小时才能完成 out_file = "./output.tsv" result = "./input.tsv" |> File.stream! |> CSV.decode(separator: ?\t, headers: headers) |> Enum.map(&(elem(&1, 1))) |> Enum.group_by(&{

Elixir asdf的.tool版本文件是否应该进入.gitignore?

我想知道这里的最佳实践是什么?Elixir版本是在mix.exs中定义的,不同的开发人员可能希望使用不同的OTP版本(与Elixir版本兼容)或不同的次要Elixir版本 另一方面,如果每个人都使用完全相同的版本,它可以简化事情,并可能使错误跟踪变得更容易。在我所从事的项目中,它通常被签入git,有时甚至被用来确定用于构建发布的版本。如果签入项目,我建议为什么制定某种标准或流程要使用的版本。如果每个项目都有自己的固定版本,那么最终您的计算机上可能会有大量安装。我可能已经安装了十几个不同项目的er

如何在Elixir/Phoenix中为文本输入指定默认值?

我有这个领域 <%= number_input f, :duration_minutes %> 我想给它一个默认值60。我该怎么做 显而易见的猜测 <%= number_input f, :duration_minutes, default: 60 %> 不起作用。根据艾伦的评论更新: schema "events" do field :duration_minutes, :integer, default: 60

使用elixir gettext标记要翻译的字符串列表(编译时)

我正在尝试将此字符串列表标记为可翻译,以便它显示在.pot文件中 import XXXWeb.Gettext @crop_types ~w(grape strawberry potato tomato rice wheat corn peas hops carrot soy sunflower other) |> Enum.map(&(XXXWeb.Gettext.dgettext_noop("crop_types", &1))) 根据,当

如何在Elixir中指定编译时的模块实现?

我有一个应用程序,应该支持多种类型的存储。目前,我希望它同时支持S3和swift 现在问一个问题:我如何允许我的应用程序选择在加载时使用哪个后端(如中所示,配置将指定它是S3还是swift) 在OOP中,我会有接口,并且可以注入依赖项。在这种情况下,最明显的答案是GenServer。但实际上我并不需要一个完整的专用进程(它也应该成为我代码的瓶颈) 我考虑简单地将引用作为参数传递给模块,但感觉有点不确定,因为从技术上讲,可能传递不正确的实现 因此,进一步指定:如何基于配置(没有Genserver)

Elixir 如何在2个配置文件之间共享变量?

在config/config.exs中有这样一个: a1 = 123 # [.........] # using a1 here .... # key123: a1 import_config("config2.exs) 但是在config/config2.exs中,变量a1将不可见 为什么不呢?如何使其在config/config2.exs中也可见? 一个简单的解决方案,没有不必要的复杂性。您可以使用环境变量存储您的值并在配置之间共享-因此在config/config.exs中

Elixir 如何使用Mix CLI安装Phoenix的早期版本?

无法使用mix-archive安装比最新版本(如1.4.0)更早的Phoenix版本(如1.3.4)。安装命令 根据此线程未实现的解决方案: 尝试在版本管理器中安装一些早期的Phoenix版本和最新版本 以下CLI命令仅安装了最新版本(如1.4.0-dev.0): 找到一个解决方法,使用以下CLI命令安装任何特定的Phoenix早期版本(如1.3.4): $ mix archive.install https://github.com/phoenixframework/archives/raw

Elixir 如何更改EXTO的调试颜色

我试图让Ecto打印它的默认SQL调试语句,但不是用红色表示DELETE,而是用其他颜色表示DELETE,因为红色使其他开发人员认为这看起来像是一个错误 我在任何地方都找不到这样的例子。任何帮助都将不胜感激。不幸的是,这似乎是不可能的,因为颜色是。根据这一点,它可以被覆盖,但我没有看到一个如何覆盖的示例-通过在存储库配置中提供您自己的日志回调,正如答案中明确指出的那样。您是否有指向此类示例的链接?我不知道那是什么。

Elixir 函数毒物。将_编码为_iodata/1是未定义的

我正在开发一个ElixirAPI,我正在使用JaSerializer,但是在调用PostAPI时,它给了我一个类似这样的错误 function Poison.encode_to_iodata!/1 is undefined (module Poison is not available) 但在我的配置文件中,我添加了毒药并使用mime重新编译 mix deps.clean mime --build mix deps.get 我正在调用的api也被插入到数据库中,但它没有响应任何Json,并

在windows 8中安装elixir/Phoenix有其他方法吗

我无法在windows 8中安装elixir。是否有其他方法可以在windows 8中安装elixir/Phoenix?我不建议使用它,但如果您在运行安装程序时遇到问题,这可能会很有用 去 下载Precompiled.zip 将Precompiled.zip解压缩到c:\elixir 运行c:\elixir\bin\iex.bat以查看它是否可以运行 将c:\elixir\bin注册到您的路径 你有什么问题?错误消息说什么?你试过什么?建议未知的替代方案非常困难。我下载exe文件并尝试安装exe

mariaex库无法正确处理utf8本地语言[elixir]

我使用Mariaexlib在elixir项目中连接到mysql。但它不能正确处理本地语言 比如说,, 当它保存本地文本时Dương Phi Phụ对于mysql数据库,D??ng Phi Ph?ng保存在数据库中 Mariaex的默认字符集是utf8,但即使我在配置中设置charset:“utf8”或charset:“utf8mb4”,它仍然不起作用 有人能帮忙吗 Mariaex版本:0.8.4(由于遗留问题,无法更新到最新版本) db字符集:utf8mb4 db排序:utf8mb4\u uni

Elixir 在批次苦艾酒数据加载器中找不到项目

在将苦艾酒从1.4.12升级到1.5.2、将ecto从2.1升级到3.0、将dataloader从1.0.2升级到1.0.7之后,我发现dataloader无法批量查找项目存在一些问题。我试着按照deepankar-j所指出的步骤去做,看看是否有什么东西与修复了use_parent:false as default问题()的PR相关,但无法解决我的问题 我完全按照文档来应用dataloader以避免N+1 一些进一步的细节: 当我在应用程序中查询特定字段时,批处理“中断”。 这就是我应用data

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