Elixir “长生不老药错误”;erlang错误::guard_expr";

在iex控制台上,我发现以下错误,我不确定我做错了什么 case %{} do x when x == %{} -> true _x -> false end 导致以下错误: ** (ErlangError) erlang error: :guard_expr 另外,我想解释一下我是如何发现这个的。我试图通过查看elixir的实现并将其更改为处理[],{}和%{}与false和nil相同,来创建自己的|宏。 下面是该实现(它有相同的问题): 去掉或x==%{}可以让事情

Elixir 有毒编码嵌套模型

副食品 我试图编码一些嵌套的外胚层模型,但我遇到了一个问题。我意识到我不能对卸载的模型进行编码,我想有可能只选择一个结构而不加载其余部分,同时有可能选择整个树 我使用了definpl的方法,例如: defimpl Poison.Encoder, for: Hangman.MasterCat do def encode(page, _options) do %{ id: page.id, name: page.name, cate

Elixir 将指数表示法中的长生不老药数转换为整数

如何将长生不老药指数转换为整数 我想把像1.0e2这样的东西转换成100。 我在谷歌上搜索了一个解决方案,但没有找到。你所说的指数实际上只是一个写在上面的浮点数,有时也称为指数符号。实际指数实际上只是整个过程的一部分。与尾数一起,它允许我们方便地表示非常大和/或非常小的数字: mantissa * (10 ^ exponent) 因此,在Elixir中,就像在许多其他语言中一样,数字1.23*(10^5)可以写成1.23e5。如果您将示例编号1.0e2键入iex,您将看到它实际上只是浮点数之上

Elixir 如何对外键中某个字段的结果排序

所以我有一张属于用户的模型票。每个用户都有很多票。因此,用户id是每个票证的外键。我如何构建一个查询,以获取每个用户的用户名所订购的所有票据?我一直在努力 query = from u in User, preload: [:tickets] query_tickets = from t in Ticket,

Elixir 您如何使用长生不老药进行多次试验?

在Ruby中,您可以执行以下操作: 10.times{put'hello world'} 我在《长生不老药》中能想到的最佳方法是: Enum.each((0..10),fn(x)->IO.put'hello world'end) 如果在程序中运行,您会收到警告hello\u world.exs:1:warning:variable x未使用 问题:在长生不老药中有更好的方法吗? 背景:我正在做一个需要进行300万次试验的模拟。我不是在重复列表。一个简化的方案是投掷300万枚硬币并记录人头数。要删

为什么需要Elixir Capture操作符将函数绑定到值

我有以下elixir代码片段: defmodule Rectangle do def area(a, b) do a * b end def area(a) do a * a end end 然后我将文件加载到iex会话中,如下所示: iex(1)> import_file "rectangle.exs" {:module, Rectangle, <<70, 79, 82, 49, 0, 0, 5, 84

Elixir 为什么需要在项目中列出库依赖项';s应用程序?

将库依赖项(仅提供函数)列为应用程序的目的是什么 例如,当它只提供简单功能时,项目建议将其作为应用程序包含 def application do [applications: [:left_pad]] end 长生不老药包是否应始终作为应用程序提供?新的库开发人员如何使其依赖项作为应用程序可用?这还提供了哪些其他功能?每个运行时依赖项都应添加到应用程序列表中。包是只提供函数还是运行进程是一个实现细节,用户不应该关心 此外,由于Erlang可以动态加载代码,我的理解是,将应用程序添加到依赖项

Elixir 如果params不是nil,则执行惯用的长生不老药?

在继续处理参数之前,如何过滤掉无效的参数,如nil或空列表 下面的案例似乎很常见,但它不是清晰的代码——我非常确定有一种更简单、惯用的方法来实现这一点 def load(token) do case token do nil -> nil [] -> nil token -> process(token) end end 如果函数有多个子句,Elixir将尝试每个子句,直到找到一个匹配的子句。这允许您根据提供的参数进行“筛选”

Elixir 如果存在两个字段,则进行EXTO条件验证

我试图只在模型存在两个字段的情况下对模型进行一些验证 就像这样: if Changeset.get_field(changeset, :field_a) or Changeset.get_field(changeset, :field_b) do changeset |> a_lot_of_validations else changeset end 问题是:当出现字段a或字段b时,它们返回字符串,因此这里会出现参数错误,因为 "string" or "string" 返回

Elixir 记录所有访问者的IP地址

我已经创建了我的第一个Elixir/Phoenix应用程序,我想记录访客的IP地址 在我的router.ex中,我正在“记录”实际存在的页面的ip地址 def log_ip(conn, _) do conn.remote_ip |> Tuple.to_list |> Enum.join(".") |> IO.puts conn end ... defmodule Mysite.Router do use Mysite.Web, :router p

Elixir 如何获取Phoenix应用程序的当前基本域?

为Phoenix/Elixir应用程序获取基本域的惯用方法是什么?不是单个请求,而是应用程序的基本域,这可能取决于其当前环境 所以在本地,它应该是localhost,但在服务器上,它可以是“dev.my_domain.com”、“my_domain.com”或其他我可以在应用程序中使用的东西 当然,我可以在config/dev.exs或config/prod.exs中添加一个特殊的键,但我认为可能已经有这样一个键可以重用。您正在寻找主机。它是存储在Plug.Conn结构中的请求字段 主机-请求的

Elixir 编译riak_核心项目时,Mix挂起deps.compile

我正在努力编译。我已经安装了erlang 18,elixir版本是1.3 编译挂起在下一行,不会向前移动: Downloaded package, caching at /Users/navinnegi/.cache/rebar3/hex/default/packages/pc-1.4.0.tar 若我停止并再次尝试运行deps.compile,它将在第行停止 Compiling parse_trans 但是,如果我删除位于User/username/.cache的rebar3文件夹并运

Elixir 更新的“U at in”;时间戳;在EXTO中,始终插入默认值为&引用;现在();

我已经在EXTO中创建了一个带有“timestamps()”的模型。当我插入时: changeset = Model1.changeset(%Model1{}, model1_params) 其“updated_at”自动插入也等于“inserted_at”或“now() 即使我这样做: model1_params2 = Map.put(model1_params, "updated_at", nil) 它仍然插入“updated_at”等于“inserted_at”。我怎样才能让它插入“u

Phoenix elixir不会安装依赖项(comeonin)

我有一个正常工作的phoenix应用程序,我正在尝试安装一个名为comeonin的新依赖项 我在mix.exs文件中添加了依赖项,如下所示,位于应用程序列表的末尾 def application do [mod: {Rumbl, []}, applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext, :phoenix_ecto,

Elixir 体外查询无法解决苦艾酒问题

我正在尝试使用一个简单的查询,但是执行EXTO查询的函数不会返回任何结果 我添加了一些跟踪来统计数据库中的记录。预计它将始终返回1,但不会返回 解析程序: def get_cards_for_stage(stage, _args, _ctx) do IO.puts "Before batch: #{OfferSid.Repo.aggregate(from(p in "pipeline_cards"), :count, :id)}" batch({__MODULE__, :pipelin

有没有办法将模式匹配中不匹配的变量设置为nil,Elixir

我写了一个我想在两个或更多控制器中使用的插件 对于第一个控制器,在params%%{params:%%{“param1”=>param01,“param2”=>param02}}=conn中有两个变量,而对于第二个控制器,只有一个变量%%{params:%%{“param1”=>param01}=conn 我使用%{params:%{“param1”=>param01,“param2”=>param02}}=conn在插件中进行模式匹配。当请求到达第二个控制器时,它抛出(MatchError)右

从Elixir中的字节解析标志

我有两个十六进制格式的字节,比如“0c”或“31”。 如何将其映射到某些标志值?我想要一个已设置的所有标志的列表 例如: "0c" -> 0000 1100 -> [:flag3, :flag2] "31" -> 0011 0001 -> [:flag5, :flag4, :flag0] 在这里,每个标志都是根据其位置命名的,但稍后我想用更具描述性的名称来命名标志 从十六进制中获取数据很容易,只需字符串。要获取整数(“0c”,16),但之后我迷失在按位的世界中。实际上,

Elixir 在Ecto迁移内部的约束函数中使用插值。

我在我的一个应用程序中进行了以下迁移 use Ecto.Migration alias SnitchPayments.PaymentMethodCode @code PaymentMethodCode.hosted_payment() |> to_charlist() # this evaulautes to 'hpm' def change do create table("snitch_hosted_payments", comment: "payments m

Elixir 用于植入JSON数据的EXTO语法

我是Elixir和Phoenix的新手,我想不出在seeds.exs文件中将JSON插入Postgres JSON列时使用的正确语法。下面是一个我试图插入的示例 Repo.insert! %Language{ page: "accounts", code: "en-us", mode: "all", language: { "username_email" : "Username or email address", "pass

Elixir 如何组合变更集错误?

我正在尝试合并变更集错误 我有一个属于用户模式的机构模式。每个字段上都需要一些字段,但错误响应如下所示: { "errors": { "user": { "password_confirmation": [ "The password confirmation does not match the password." ], "password": [

Elixir-Exto:在两个不同的数据库之间验证

在我的伞形应用程序中,目前有两个应用程序,每个应用程序都基于自己的DB 我在app2中有一个模式,引用了app1对象的uuid DB1 : Table : parent parent_id: uuid name: string DB2 : Table : child child_id: uuid parent_id: uuid name: string 然后,模式: schema "child" do field :name, :str

Elixir 使用ConnTest'发送无效的JSON;s柱

我试图测试我的端点是否在无效JSON上返回400。如果我这样做: response = conn |> put_req_header("content-type", "application/json") |> post(Routes.convert_path(conn, :convert), "invalid JSON") 我将得到一个Jason.DecodeError,因为它试图对我的字符串进行编码。我怎样才能让它不编码呢?看看这些文件,似乎无法做到: post(con

Elixir 星外通信中的复合主键

在迁移过程中,我们可以添加多个主键,它们都充当复合主键。我在表中有四个字段,其中三个是主键,工作得很好。当我尝试添加新迁移并将第四列作为主键时。博士后给了我这个错误 (Postgrex.Error) ERROR 42P16 (invalid_table_definition) multiple primary keys for table "rooms_units" are not allowed 这是我的新迁移: alter table(:rooms_units) do modif

Elixir Enum.reduce重新运行:第一次迭代后确定

我在Enum.reduce中传递一个由整数组成的列表作为字符串,并对列表的每个值运行一个函数。但问题是在第二次迭代中它返回:好的,由于哪个函数给出错误,我在代码中使用多个IO.puts只是为了跟踪错误 下面是我对_decimal的函数,当我们将11作为参数传递时,它应该返回这个二进制值的十进制表示形式。但它在第二次迭代中停止,我将在下面写出输出- def to_decimal(string) do list = String.graphemes(string) len = len

在Elixir中按多个值映射组

我有这张地图 map = [ %{id: 2, brand: "TUTU", reference: "1234"}, %{id: 2, brand: "TUTU", reference: "4567"}, %{id: 3, brand: "TOTO", reference: "789456"} ] 我想按ID进行分组,得到如下结果: [ %{ id:

如何通过unix管道将一个命令的输出传输到Elixir';什么是混合任务?

我希望将cat命令的输出“管道”到Elixir Mix任务中,并将其作为二进制保存在变量中 我已经尝试过使用IO.get/1,但它只读取输出的第一行 cat textfile.txt |混合打印 defmodule Mix.Tasks.Print do 使用Mix.Task def运行(_argv)do Task.async(fn->IO.get(“”)end) |>任务等待(t) |>IO.puts()#打印第一行 结束 结束 我想在Elixir中的二进制变量中保存整个文件的内容并将其打印

Elixir 从另一个目录导入模块

是否可以从另一个目录导入模块?如果是,我怎么做?我可以从另一个目录重新使用模块的唯一方法是手动将其复制到本地文件夹中,然后通过elixir script.exs 为了添加更多的上下文,我有一个名为Utilities的文件夹和另一个名为Scripts的文件夹。在Utilities文件夹中定义了一个名为ListUtilities.ex的elixir模块,我想在script.exs中引用它。以下是我的目录布局的可视化表示: Utilities ListUtilites.ex Scripts

Elixir 如何使用EEx phoenix模板检查嵌套值中的nil

我有以下代码。 我想向各位议员说明这一点。 所有成员至少都有第1点。 有些成员有第2点或第3点。这意味着有些成员的第2点或第3点为零 <%= for member <- @members do %> <%= member.point1 %> <%= member.point2 %> <%= member.point3 %> <% end %> 应该清楚地区分应该清楚地区分二进制'or'运算符(|)将n

Elixir HTTPoison.request/5以奇怪的原因引发%HTTPoison.Error

升级到Elixir 1.10.3后,调用HTTPoison.request!()引发了一个HTTPoison.Error和{:options,{:sslv3,{:versions,[:“tlsv1.2”,:“tlsv1.1”,:tlsv1,:sslv3]}的原因。这是什么原因造成的?我在网上看到的所有示例都假设原因是atom。sslv3已从Erlang 23.0中删除,因为它是一个旧的、不安全的协议。您需要将hackney升级到1.16.0或更高版本,以便获得修复该问题的PR: 我相信这与Eli

Elixir 更改集在下拉数据更新时未更新

假设我有数据: data = [[key: 1, value: "1"], [key: 2, value: "2"] ,[key: 3, value: "3"]] child_data = %{1: [key: 1, value: "exists"]} 以及html: <%= select f, :corporation_id, data %> <%= select f, :company_id,

Elixir/Horde:DynamicSupervisor.start\u child()被一条神秘的警告消息阻止

我正在使用Elixir1.10.1和Horde0.8.3作为移动和web应用程序的后端API。基本上,用户由UserAgent表示,简称UA(用GenServer实现),它在集群中是唯一的,只要客户端应用程序至少有一个实时连接,它就存在。客户可以多次连接(电话、平板电脑、网络、家庭、工作等);每个连接都由一个连接代理表示,简称CA,它是唯一的。只要用户未注销或会话未过期,CA就处于活动状态。基本上,我只有一个唯一的UA,但我可以有几个CA 登录过程分为三个步骤 接收到HTTP登录请求(JSON内

Elixir 如何在一对多关联中预加载关联?

我的结构如下: 订单有许多产品 产品有一个模板 订单有许多模板到产品 我的查询如下: def with_template(query \\ Product) do from q in query, preload: :template end def with_products(query \\ Order) do from q in query, preload: :products end 当我这样做的时候: OrderQuery.with_products |> Prod

Elixir 显示具有多个直通连接的属性

我有一张发票,上面有许多行项目,它们也属于产品。在invoice#show上,我想显示该发票的所有行项目,以及相关产品的名称。来自Rails,我很难将这些点连接起来行\u item.product.name无效。如何在该表中显示产品名称 应用程序 mix phoenix.new my_app cd my_app mix ecto.create mix phoenix.gen.html Invoice invoices number mix phoenix.gen.html Product pro

Elixir 在IEx中,为什么\t变成空格而不是制表符?

在IEx中,puts\t最多打印7个空格 iex(1)> IO.puts "1\t2" 1 2 # same as 1\s\s\s\s\s\s\s2 但是,如果我将相同的代码放在一个文件中,并在bash中运行它,它将为我提供真正的选项卡 $ elixir test.exs 1 2 # same as 1\t2 您可以使用Textmate并启用“不可见字符”以查看差异 我的问题是: 为什么会这样 有没有办法在IEx中将\t变成一个真正的选项卡 注意:这是在Ma

Elixir 如何使用github的依赖项将包发布到hex?

如何将具有github依赖项且运行包所需的包正确发布到hex?您不能 只有十六进制包将作为包的依赖项包括在内,例如Git依赖项将不包括在内 这是为了确保hex.pm上发布的每个包将来都可以构建。Github存储库可以由创建者随时删除,但是在hex.pm上发布的包在发布1小时后无法取消发布。您需要包括您从Github依赖的内容。也就是说,获取源代码和构建,然后删除github依赖项。只需在从github获取的版本上冻结代码。

在Elixir中定义自定义Maru类型并使用它获取Json POST实体

我想在Maru中定义一个自定义类型,用它来解析JSON post实体,并进一步用它来执行sql语句。但我不知道该怎么做 这是我的自定义类型 defmodule Maru.Types.Volume do use Maru.Type @type length :: Float @type breadth :: Float @type height :: Float end 此类型必须在路由器中使用 defmodule My.Router.Box do use

Elixir 菲尼克斯:如何监管一名经纪人?

我正在尝试使用代理作为商店。但是,我遇到的问题是,我存储数据的密钥不存在 这是我的频道: def join("user_pool:" <> email, %{ "app" => app }, socket) do Logger.info "PRODUCTION user_pool email: #{email}, app: #{app}" socket = assign(socket, :email, email) socket = assign(s

Elixir 如何将数字列表转换为连续数字列表

我正在尝试编写一个函数,可以将数字列表转换为连续数字列表 例如,转换数字列表,如下所示: [1, 2, 3, 4, 10, 11, 12, 20, 21, 30, 32, 42, 43, 44, 45, 48, 49] [[1, 2, 3, 4], [10, 11, 12], [20, 21], [30], [32], [42, 43, 44, 45], [48, 49]] 进入连续数字列表,例如: [1, 2, 3, 4, 10, 11, 12, 20, 21, 30, 32, 42, 4

Elixir 使用exto.changeset无模式验证嵌套json

我已经开始用Elixir和Phoenix编写一个应用程序,但是我有点迷路了 基本上,应用程序将收到一个复杂的JSON,我需要验证它并将其保存在数据库中 大概是这样的: defmodule Foo.Person do import Ecto.Changeset def types("person") do %{id: :integer, name: :string, address: types("address")} end def types("address")

Elixir 是否可以在Phoenix框架中创建独特的会话?

我试图避免与竞争条件发生冲突,因为为同一用户打开了两个或多个会话,因此,我考虑为每个用户只打开一个会话,在打开新会话时关闭旧会话。您知道如何以最佳方式实现这一点吗?我个人认为这将是一种可怕的用户体验-我不希望应用程序以这种方式“管理”。我希望对于一个用户id可以有多个会话 第二,您需要考虑应用程序水平缩放的可能性,因此需要多个APP/菲尼克斯服务器。现在,您必须在分布式环境中管理“用户”的唯一性 如果您采用这种策略,那么Phoenix Presence提供了一种管理分布式状态的方法,但是。。。这

Elixir 使用动态运算符创建EXTO查询

我知道如何在EXTO查询中使用动态字段和值,例如: field = :age value = 20 Ecto.Query.where(App.User, [x], field(x, ^field) < ^value) 但它引发了一个异常:exto.Query.CompileError)为了防止SQL注入攻击,片段(…)不允许字符串…您可以,只需进行一点元编程。支持自定义宏 defMacro自定义_,其中(t、f、v、sign)执行 {sign,[context:Elixir,import

Elixir 酒厂放行不';“找不到”;释放“控制”;在自定义命令中

我已经按照中的说明为蒸馏厂版本创建了一个自定义命令,但是我创建的脚本似乎找不到Release\u ctl。我用的是酿酒厂2.1.1 例如,下面的脚本 #!/usr/bin/env sh release_ctl --mfa "Elixir.IO.puts/1" --argv -- "$@" …退出时退出代码为1。让事情变得更简单 #!/usr/bin/env sh which release_ctl …还退出,退出代码为1 有什么想法吗?这只是个简单的放屁。我找不到eval。我应该用 #!

Elixir 捕获端口范围无效的HTTPoison错误

遇到传递给get的url包含无效端口的情况 iex> HTTPoison.get("http://example.com:650000") ** (FunctionClauseError) no function clause matching in :inet_tcp.do_connect/4 (kernel) inet_tcp.erl:113: :inet_tcp.do_connect({127, 0, 0, 1}, 650000, [{:packet, :raw}, {:ac

Elixir 处理或防止的惯用方法;竞赛条件“;灵丹妙药

对不起,这个愚蠢的问题。但我是一个新手在长生不老药来自戈朗 我真的很喜欢elixir和FP风格,我尝试实现一些基本功能,但在websocket连接上遇到了种族条件问题。例如,在golang中,我使用互斥来解决它,但它不是FP样式 初始问题: 多个WebSocket连接,等待5人组。然后随机洗牌。在这个例子中,我遇到了一些关于“比赛条件”的问题。同一个人分为不同的群体等 用长生不老药解决这个问题的惯用方法是什么 谢谢你的帮助。再一次为一个愚蠢的问题感到抱歉 我将分享我丑陋的代码片段) 例如,两个并

Elixir EXTO:如何访问预加载关联的字段

我正在尝试获取与friend_Reference_代码没有关联的用户,或者他们的代码状态为false,并且他们也没有使用任何代码。但是我无法访问预加载的关联朋友推荐代码的字段状态。我是这样做的: def get_first_free_invite_users() do users = list_users() |> Repo.preload([:friend_referral_code]) |> Enum.filter( f

上一页   1   2    3   4   5   6  ... 下一页 最后一页 共 125 页