是否支持elixir的readline绑定?

我正在尝试创建一个程序,它接受用户输入的方式与iex或erl类似(例如,当按下允许键浏览以前的历史记录时) 如果标准IO.get按如下方式使用 IO.gets "user> " 按下up allow(向上允许)时,控制台将结束以下操作 user> ^[[A^[[A 是否有可以在elixir代码中使用的具有readline功能的函数/库 到目前为止我调查的是 有些语言对readline库有绑定支持,但我还没有找到elixir的相应功能 iex实现似乎将此功能委托给了erl(/l

Elixir Plug.Adapters.Cowboy.http中的选项和选项之间有什么区别?

该函数定义为 def http(plug, opts, options \\ []) do ... 为什么有两个参数的含义相同,但名称不同?第一个选项是plug选项。第二种选择是给予牛仔和牧场的选择。我们绝对应该重新命名它们以使其更清晰。顺便说一句,我们非常感谢您的请求。:)请求已提交。

Elixir 整数范围上的大小写匹配

有没有办法匹配整数范围?我希望在一定数量的字符后去掉字符,并添加省略号。这是我想做的,但在1..32上不匹配 def cutoff(title) do case byte_size(title) do _ -> title 1..32 -> String.slice(title, 1..32) <> " ..." end end def切断(标题)do 案例字节大小(标题)do _->标题 1..32->String.slice(

Elixir “开始”;iex“;使用加载应用程序,并在1行中运行命令

我想像Node.js中的“gulp.js”一样进行自动构建 $iex-S mix-e'dribbblegf.main' **(Mix)无法将标志隐式传递给默认的Mix任务,请改为调用:Mix run 我想在一行命令中执行此操作 加载应用程序 启动“iex” do函数(dribbblegf.main) 因为,最后我想看这样的文件 chokidar**/*.exs**/*.ex-c'iex-S mix-e'dribbblegf.main“ 如果您有其他自动生成解决方案,请告诉我。试试: iex

Elixir 使用Mix强制更新包

当我使用以下命令时 mix deps.update——全部 如果包的版本未在mix.ex文件中更改,mix将使用本地缓存的包。所以问题是,我如何强制mix不使用缓存版本,而是从服务器下载?例如,如果某个软件包的最后一个版本发生了更改,我想继续更改,即使该版本没有被碰撞。发布的十六进制软件包的第一个版本在最初创建后最多只能更改1小时,之后它将变为不可变且永远不会更改。将来,当Hex在发布前添加用于测试包的工具时,您将永远无法更改已发布的包 Hex执行条件GET请求,以获取已缓存的包。如果包没有更改

如果不为空且密钥存在,请检查Elixir地图

我试图找出一种方法来检查Phoenix应用程序(使用Elixir)中的params散列是否有特定的键 在模型中的以下变更集函数中,参数默认为:empty def changeset(model, params \\ :empty) do 我需要弄清楚散列中是否存在一个名为:username的键。只是一个小术语,params是一个映射而不是散列。这与了解文档中的查找位置有关 对于映射,存在返回true或false的属性 Map.has_key?(params, :name) 因为您正在使用一个

Elixir 列表折纸~从两个列表生成新列表

我目前正在学习长生不老药,我仍在努力让我的头脑围绕清单理解。我有两个列表,内容和一个素数的一次性列表。我使用两个列表理解,然后使用一个if来确定它是否是素数,将其丢弃并从列表中删除 iex(25)> content = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] iex(26)> for c <- content do ...(26)> fo

Elixir 为什么不赞成if语句中的模式匹配?

我刚刚在我的Phoenix应用程序中安装了mix库,它告诉我web/views/error\u helpers.ex文件在错误标记方法中有重构机会: def error_标记(表单、字段)do 如果error=form.errors[field]do 内容标签:span,翻译错误(错误),类:“帮助块” 结束 结束 信条传达的信息是: if条件中不应存在匹配项 换句话说,if error=form.errors[field]do中有一个模式匹配。但是,除此之外,信条库没有详细说明 为什么这样不

Elixir:从嵌套结构中提取数据的最佳实践

在Elixir中,我们可以使用 data = %{field: %{other_field: 1}} data[:field][:other_field] 如果它包含列表,也可以使用 data = %{field: %{other_field: [1]}} get_in data, [:field, :other_field, Access.at(0)] 但是,如果data.field.other_字段是一个结构,那么如何获取该数据呢? 上述两种方法都会失败,因为结构不实现Access.fe

Elixir 为什么_原子(nil)在长生不老药中等于真?

这个问题很简单,我在图书馆工作时就注意到了 此表达式返回: is_atom(nil) # => true 这有点不可预测。我的问题是:这是怎么发生的?它为什么返回true?nil与true和false是一个原子 这在中记录为true和false 您还可以通过以下方式进行检查: nil == :nil true == :true false == :false 一些相关链接: 因为“nil”是一个原子,就像“真”或“假”一样。嗯,这是一个奇怪的解决方案。但我的名字不是Jose Vali

Elixir 在控制器中维护状态?

我愿意为cassandra db使用客户机,因此我需要将其初始化为: client = CQEx.Client.new! 我创建了两条路径,读写指向控制器中的操作 问题是,我如何只初始化客户端一次,并在控制器的操作中每次使用它 我应该创建一个GenServer并从控制器操作向其发送消息吗?这样我就可以在GenServer中维护cassandra客户端了 我每次执行操作时都要创建客户端吗 这里有什么建议吗?我还需要进一步挖掘,但它看起来像CQEx.Client.new实际上并没有初始化客户端,这

Elixir 为什么是长生不老药';如果';宏不接受与元组{:do,“true part”匹配的变量?

我正在学习长生不老药(在Ruby,JS中有一些经验)。我有一个有趣的问题。只是出于好奇,为了更好地理解函数式编程 从: 提供一个if/2宏。 此宏要求第一个参数为条件,第二个参数为关键字列表 换句话说,我可以写: if(true, [do: "true stuff", else: "false stuff"]) # => "true stuff" 这条线工作得很好。嗯 但据我所知,关键字列表是元组列表。所以我试过: if(true, [{:do, "true stuff"}, {:els

Elixir 获取json值并使用特定的模式将其存储在我的表中

如何获取特定的json值并将其存储在具有特定模式的表中 e、 g我试过了 def save_to_payment(conn,result) do Poison.decode!(result, as: %Payments.payment{} ) end 有了这个模式 schema "payment" do field :payment_id, :string field :state, :string field :amount, :decimal timestamps()

Elixir Phoenix-字段列表中的未知列“m0.field”`

我对我的控制器运行一个简单的测试,然后预加载关联 test "shows chosen resource", %{conn: conn, country: country} do mobile = Repo.insert! %Mobile{country_id: country.id} mobile = Repo.preload(mobile, :country) conn = get conn, mobile_path(conn, :show, mobile)

Elixir 首次通过编辑创建关联时新建和编辑变更集

我有两个不同的公司变更集(新建和编辑)。原因是,我想要一个比编辑(可选地址)更简单的注册过程(只需要名称) 下面的测试抛出以下错误: 试图从未加载的公司中转换或更改关联地址。请先预加载关联,然后再通过变更集对其进行操作 我如何/为什么要预加载一个尚不存在的关联 变更集: def new_changeset(struct, params \\ %{}) do struct |> cast(params, [:name]) |> validate_required([:nam

Elixir 获取escript可执行文件的源代码

我错误地删除了我写的长生不老药铭文的源代码;作为最后的手段,我试图通过反编译部署在服务器上的可执行文件来获取源代码(如果可能的话) 如果有必要,它是在Ubuntu 16.04上编译的,运行mix escript.build,没有附加参数 如果有人能告诉我如何做或从哪里开始,我将不胜感激 谢谢以下是如何取回文件的已编译Erlang源代码。我不认为这是可能得到原来的长生不老药来源回来,因为它是不存在于所有的描述;只有已编译的Erlang字节码是可用的。如果您知道一些Erlang,反编译的Erlang

Elixir Phoenix:使用与html格式不同的模板布局

我在web/templates/layout/中有默认的app.html.eex,它可以与我的所有模板*.html.eex一起工作。我将app.html.eex文件复制到app.rss.eex,并将内容更改为通用rss代码,以便在我的*.rss.eex模板中仅使用特定代码,但它仅渲染*.rss.eex代码,而不使用布局 我试图插入管道插件:put_layout,{Exampleapp.LayoutView,:app},但没有成功。当然,我将accepts配置为使用带有plug:accepts、[

Elixir 毒药编码错误无法编码值。维克包装

我正在尝试用phoenix框架构建一个简单的mailer应用程序,在这里我需要发送非阻塞电子邮件。为此,我决定使用这个软件包 问题是,当我将活动对象传递给Verk.enqueue时,会出现以下错误 Poison.EncodeError at POST /1/send unable to encode value: {nil, "campaigns"} - 下面的工作,但我必须等待几秒钟,它才能完成 Enum.each(campaign.group.users, fn(user) ->

如何在elixir伞形应用程序中处理多个应用程序配置文件

我有一个长生不老药伞应用程序A,它下面有多个应用程序。其中一个定义为单独的存储库,包含其自己的config/config.exs文件,大部分为默认值 将应用程序B添加到A并启动伞形应用程序时,不会加载应用程序B的配置。看起来我需要在配置中显式地包含B的所有配置参数 我希望应用程序B的配置在应用程序A中仍然可用,我只需要覆盖一些特定的值 有谁能向我解释一下,在主应用程序配置文件中不重新指定所有配置参数的情况下,如何实现此目标?使用mix new生成的伞形应用程序应自动包含所有应用程序的配置 在您的

Elixir 营救行动条款错误

我正在实现一个API端点。在我的控制器操作中,我想使用保护验证参数类型,如下所示: def get_object(conn, %{"objectId" => object_id}) when is_binary(object_id) do 当客户端调用此端点时,如果“objectId”不是二进制文件,或者根本没有“objectId”,phoenix将引发phoenix.ActionClauseError。我希望挽救此类异常,并返回一个自定义响应正文(例如,{“message”:“Inva

向elixir graphql添加聚合字段

我正在用苦艾酒配长生不老药凤凰1.3。我有一个博客应用程序,它包含用户、帖子和喜欢的内容,喜欢的内容通过用户和帖子之间的多对多关系连接在一起 schema "users" do field :email, :string field :handle, :string many_to_many :liked_posts, MyApp.Content.Post, join_through: "likes" end schema "posts" do f

Elixir 如何在与EXTO连接时返回select值

我用的是外星2.2.6 我正试着让外星人加入 首先,我使用List返回带有单个表的select值。一, 接下来,由于表连接,我使用Map返回select值。二, Repo.all(from m in "members", left_join: g in "groups", on: g.id == m.group_id, where: g.id == ^group_id # select: [:id, :group_id, :name, :group_

获取列表的每个元素并将其映射到elixir中的结构

你将如何获取字符串列表,例如 ["jeff", "bezos", "21"] 并将其映射到一个结构 %{:fistname => "jeff", :lastname => "bezos", :age => "21"} 是否可以使用枚举函数,或者是否可以使用映射函数。我需要指定格式的这个结构,这样我就可以将它发送到数据库中我假设每次字符串的顺序都相同 然后您就可以进行模式匹配: [firstname, lastname, age] = array %{:fistname =&

为什么Elixir Plug使用宏将插件编译到AST中?

如代码所示,插件定义将在宏扩展阶段编译为AST。但是为什么呢?为什么不保留plugs定义并使用Enum.reduce\u while或递归逐个调用plugs?我可以想到两个原因: 表演。考虑这两个代码段做相同的事情,但是使用编译函数调用来完成,而另一个使用枚举。Reals< /Cord>和应用< /C> >: defmodule A do def add1(x), do: x + 1 def sub1(x), do: x - 1 def compiled(x) do x

Elixir 如何在EXTO中使用复杂约束?

这就是我想要实现的 1. Customer can create a contact with name and phone number. 2. Customer can not create a contact with already existing phone number. 所以我喜欢这个 schema "people" do field :name, :string field :phone_number, :string belongs_to :phon

Elixir Node.spawn/2和Process.spawn/1之间有什么区别?

如果我将我的本地节点作为node.spawn/2的参数传递,它们似乎都会生成Erlang进程。还有什么吗?首先没有Process.spawn/1 有: , , 和 . 由于我删除了指向Elixir和erlang文档的全部链接以及指向实现的链接,因此您可以遵循这些链接,并确保它们都是语义糖,以便使用本地或远程erlang调用生成erlang进程 spawn_opt(Module, Function, Args, Options), spawn_opt(Node, Module, Functio

Elixir EXTO-按月访问日期时间字段 defp query_by(query,%{“min_end_date_month”=>min_end_date_month}=params)do 查询=来自(q在查询中,其中:q.end\u date.month

当查询向Elixir返回日期值时,Elixir将其解码为日期结构,该结构允许您使用.year,.month等访问日期的部分。但是,查询是由数据库执行的,您无法使用访问年/月/日。有使用特定于数据库的函数从日期值中提取这些值。假设您使用的是PostgreSQL,则可以使用Date\u part: defp query_by(query, %{"min_end_date_month" => min_end_date_month} = params) do query = from(q in

Elixir “exto.Schema.Metadata”的用途是什么?(即“元”字段)

我计划使用exto的Schema和Changeset仅用于验证,而不将任何内容持久化到数据库中,并试图弄清楚是否应该使用。根据文档,它们之间的唯一区别是“嵌入式模式不需要源名称,也不包含元数据字段。” 因此,我选择了嵌入式_schema/1,工作非常出色,但它让我想知道元数据的确切用途是什么?对于澄清这一点没有多大帮助: 存储结构的元数据 这些字段是: 状态-结构生命周期中的状态,其中一个为:build,:loaded, :删除 source—查询旁边的架构的源 前缀,默认为{nil,“sou

Elixir 工人在主管启动后退出

我正在尝试在mix.exs中调用应用程序模块的主管中启动以下工作人员 像这样 defmodule AppStarter do import Supervisor.Spec def start(_type,_args) do children=[ worker(TPMod1,[],[]), worker(TPMod2,[],[]) ] opts=[strategy: :one_for_one, name: HelloVisor] Su

Elixir 迁移数据库约束

我正在编写一个迁移文件和一个字段,我想为其设置DB Postgres约束: def change do create table(:reviews) do add(:title, :string) add(:contents, :string) add(:stars, :integer) add(:user_id, references(:users), null: false) add(:user_id, references(:use

在Elixir中的函数调用之间保留变量值

调用函数中有一个字符串变量,我想将被调用函数返回的值附加到调用函数中的字符串变量。 在调试时,我看到每次我对字符串执行concat操作时,它都在创建一个新实例,因此该值没有被更新。 有没有其他方法可以达到同样的效果?所有数据都是不可变的。你可以不做任何更改/更新 不过,您可以重新绑定变量 a=foo a=a-巴 ⇒ 富吧 例如: a = "world" b = "hello #{a}" 听起来您正在函数内部执行concat,如下所示: def concatstr,do:str,世界! 然后像这

Elixir Access.get/3中没有匹配的函数子句-为什么会出现此错误?

当我试图从数据库中获取列表时,出现了这个错误,我不明白为什么 这是引发错误的函数: def list_lectures do Lecture |> Repo.all() |> Repo.preload(:author [user: :credential]) end 这是我运行代码时遇到的错误: iex(1)> Ram.CMS.list_lectures [debug] QUERY OK source="lectures" db=3.4ms d

mix.exs文件中的Elixir版本要求无效

我正在尝试运行mix deps.get。当我这样做时,我会得到以下错误: (Mix) Invalid Elixir version requirement <version> in mix.exs file 这似乎很标准。我在网上找不到关于这件事的任何信息。更改版本不起作用,完全排除elixir版本字段也不起作用 注: 系统详细信息: Erlang/OTP 21 [erts-10.3.4] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async

GenServer从数据库中搜索键值对[Elixir]

我正在尝试搜索已存储在genserver中的键值对。我认为我的语法在如何将映射传递到handle\u调用函数中有问题 这是我的搜索函数和句柄回调函数: def搜索(存储桶、键值列表)执行 map(键值列表,fn{key,value}-> 调用(bucket,{:search,key\u value\u list}) (完) 结束 def handle_调用({:search,key_value_list},from,state)do {:noreply,Map.get(key\u value\u

Elixir 如何使Mix仅运行我的测试套件中的特定测试?

如何使Mix仅运行我的测试套件中的特定测试 运行混合测试时执行所有测试有5种方法仅使用Elixir运行特定测试 使用混合测试路径\u运行单个文件,以\u your\u tests/your\u test\u file.exs 这将运行您的测试文件.exs中定义的所有测试 通过添加冒号和该测试的行号,从特定测试文件运行特定测试 例如,mix test path_to_your_tests/your_test_file.exs:12将在 您的测试文件.exs 定义要在测试方法上排除的标记 defmo

为什么Elixir允许带有未定义变量的闭包?

我可以理解: iex(7)> outside_val = 5 5 iex(8)> print = fn() -> IO.puts(outside_val) end #Function<20.90072148/0 in :erl_eval.expr/5> iex(9)> print.() 5 :ok iex(7)>外部值=5 5. iex(8)>print=fn()->IO.puts(值外)结束 #作用 iex(9)>打印 5. :好的 我不太明白的是,

Elixir 如何去除六角形上的长生不老药包装

我想删除十六进制上已发布的长生不老药包。我已经知道,我只能用这个命令在创建后一小时内删除它 mix hex.publish --revert VERSION 但是,有没有其他方法可以删除在十六进制上创建后超过一小时的包?谢谢你的建议。引用hex.publishmix任务: 如果要还原超过一小时的发布,需要与管理员联系 您可以将包还原回没有版本的起点 mix hex.publish --revert 0.0.1 这将还原已发布的版本0.0.1,并使包中没有代码,现在只保留名称,直到管理员根据请

Elixir 为什么此变更集不能使用EXTO正确更新?

我在遵循我们在生成的控制器中看到的模式。变更集说它是有效的,但当我更新用户模型时,不会得到更新。这个角色仍然是零 > alias Faq.Repo > user = Repo.get!(User, 1) > changeset = User.changeset(user, %{role: 'admin'}) #Ecto.Changeset<action: nil, changes: %{}, errors: [], data: #Faq.User<>, val

Elixir 我怎样才能在长生不老药中增加列表?

我有一张单子 [1, 4, 3] 我想乘以它,比如: [1, 4, 3] * 3 # => [1, 4, 3, 1, 4, 3, 1, 4, 3] 我该怎么做呢?想到的最简单的事情是: def multiply_list(list, factor) do Enum.reduce(1..factor, [], fn(_, acc) -> acc ++ list end) end 我会使用Stream.cycle/1 iex> stream = Stream.cycle(

Elixir phoenix架构中自定义验证的控制流

我正在尝试在我正在开发的phoenix应用程序的模式中实现一些验证。我的模式中有一个属性:details,其中包含一个地图,其中包含关于问题和答案的数据。例如: %{ question: "What's for dinner?", options:[ %{option: "Chicken", selected: false}, %{option: "Fish", selected: true} ] } 模式还有一个:type属性,用于描述:details映射的内容。

Elixir 使用EXTO变更集删除尾随和前导空格

在将Changeset/2插入数据库之前,在调用Changeset/2时,是否有一种内置的方法可以删除exto.Changeset中字段的尾随空格和前导空格 目前,我正在向模式中添加两个自定义函数,用于数据过滤,以提高数据完整性: defp trim_fields(changeset, fields) do Enum.reduce(fields, changeset, &trim(&2, &1)) end defp trim(changeset, field) d

Elixir 是否可以使用宏为所有EXTO模型创建默认新功能?

我希望我的所有型号都能访问一个new便利函数,该函数返回一个自定义变更集 比如: def new(attrs) do changeset(%__MODULE__{}, attrs) end 这样,当我需要变更集验证时,我可以调用: Project.Model.new(%%{param1:“param1”}) 而不是: Project.Model.changeset(%Model{},%%{param1:“param1}) 我遇到的问题是,当我实现以下宏时: defmodule Projec

Elixir 如何测试设置404状态和Phoenix重定向的插头

我试图测试,当找不到站点id时,下面的插件是否返回404。浏览器中的一切都正常,但测试会引发异常 我的插头: defmodule MyWeb.Plugs.GetSite do import Plug.Conn def init(default), do: default def call(%Plug.Conn{host: host} = conn, _default) do case GetSite.get_site_id(host) do nil ->

Elixir 更新嵌套映射

我有这张地图: %{project: %{title: "Frank's Project"}} 我想将地图更新为如下所示: %{project: %{title: "Frank's Project", subtitle: "another one"}} 我该怎么做 我以前的尝试没有成功: Map.put_new(params[:project], :subtitle, "another one") 返回此: %{starterTopic: "garden", title: "Frank's

Elixir 运行混合测试时,如何避免ExUnit.start()错误

当我在我的项目上运行mix test时,我得到了以下错误,我不明白为什么: $ mix test Compiling 2 files (.ex) == Compilation error in file lib/myproject_web/controllers/email_controller_test.ex == ** (RuntimeError) cannot use ExUnit.Case without starting the ExUnit application, please

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