Elixir 如何创建数据流和日期列表

我想创建一个日期列表,其值从startdate到enddate 这与长生不老药相似 由于列表可能是巨大的,也可能是无限的(例如,没有结束日期),我还想知道如何创建一个日期流 start_date = Calendar.Date.from_erl!({2014,12,27}) date_stream = Stream.iterate(start_date, &(Calendar.Date.next_day!(&1))) Enum.take(date_stream, 10)

Elixir quote块的返回值是多少?

我尝试学习宏,并有以下代码片段: defmodule ControlFlow do defmacro unless(expression, do: block) do quote do if !unquote(expression), do: unquote(block) end end end 它的工作原理与预期一致: iex(16)> ControlFlow.unless 2 == 5, do: "block entered" "block e

Elixir phoenix未定义功能变更集/3

我研究菲尼克斯的框架。 是将存储在云存储中的图像的模型。创建图像时,我计算文件的哈希值,并将其作为:name。我制作了一个模型、控制器和视图。但我不明白为什么我会收到一个错误: == Compilation error on file web/models/image.ex == ** (CompileError) web/models/image.ex:26: undefined function changeset/3 (stdlib) lists.erl:1338: :lists.

Elixir 长生不老药/凤凰二元原子

我有一张表格 如果我只使用英语,它会非常好用。但中文,或任何其他返回错误 ** (ArgumentError) argument error :erlang.binary_to_atom("刺繡等等我", :utf8) (elixir) src/elixir_parser.yrl:512: :elixir_parser.yeccpars2_93/7 我相信这与编码有关。如何将字符串转换为可接受的格式 提前谢谢 自当前版本的Erlang(19)起,Atoms不能包含255以上的代码点 二元到二

Elixir应用程序中的共享常量

保持不同elixir应用程序之间可以共享的常量的最佳方法是什么 就我而言,我有系统中不同类型付款的速记。 e、 g 等等。我想让这些值在应用程序之间共享。Erlang提供了两个神奇的功能,和 构建您自己的映射(不要对键使用大写符号,虽然它们确实是原子,但它们是为模块名称保留的。它们无论如何都不是常量。) 并将其存储到顶级目录中的某个文件中: File.write!("path/to/file", :erlang.term_to_binary(shared_constants)) ~/elixi

Elixir 为什么使用HashDict而不是Dict?

长生不老药新手。这个问题将简短而甜蜜 我正在通过在线编程练习学习长生不老药,并就最近提交的内容获得以下建议: 通常,如果需要,最好使用Dict.foo而不是HashDict.foo 可能的Dict函数适用于所有类型的词典,因此 您的代码发生了更改,您需要更新的位置将减少 这让我意识到我不知道什么时候应该使用HashDict而不是Dict。一个人有什么特别的优点?我能想到的唯一用例是性能优化。Dict函数需要在运行时解析目标模块,然后将调用转发给该模块。直接调用HashDict可以克服这一步 我确

如何自定义Elixir项目deps目录?

我正在SnapCI上运行Elixir项目的CI,并缓存我的deps文件夹,这样它就不必在每次尝试运行我的测试时都安装我的deps。我该怎么做 我注意到,DEPS_DIR有一个env设置,但这似乎是一个钢筋问题,或者是相同的?无论如何,我在一个简单的项目上尝试过,但它似乎不起作用,mix仍然在我当前的文件夹中安装我的DEP 2015年3月4日更新 以下是我的snap ci完整脚本: curl -O https://raw.githubusercontent.com/spawngrid/kerl/m

Elixir-关键字列表和地图之间的差异

刚从戴夫·托马斯的长生不老药书开始 它涉及两个概念: 关键字列表 [ name: "Dave", city: "Dallas", likes: "Programming" ] states = %{ "AL" => "Alabama", "WI" => "Wisconsin" } 地图 [ name: "Dave", city: "Dallas", likes: "Programming" ] states = %{ "AL" => "Alabama", "WI" =&g

Elixir 为什么这个长生不老药代码这么慢?

我目前对学习长生不老药非常感兴趣,我学习一门新语言的典型方法是用它来构建简单的程序 因此,我决定编写一个(非常简单的)类似grep的程序(或模块),如下所示: defmodule LineMatch do def file(s, path) do case File.open(path, [:read]) do {:ok, fd} -> match s, fd {_, error} -> IO.puts "#{:file.format_error

Elixir中是否有类似Python的快捷方式';列举什么?

在Python中: >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] 它基本上接受一个iterable,并将每个项的索引添加到项本身 《长生不老药》有没有类似的版本?因此,长生不老药IRC频道的一位热心人士(OliverMT)为我

Elixir 如何从EXTO模型中删除字段

我想从现有的Ecto模型中删除一个字段: field :age, :integer 阅读文档后,我不确定什么是最好的/简单的方法(删除(列))?…你能举例说明吗? 我试过: def change do create table(:users) do remove :age end end 而且它不工作。您想使用table而不是create table def change do alter table(:users) do remove :age

Elixir 如何从连接获取请求正文?

在我的控制器的update(conn,params)操作中,如何获取PUT请求传入的JSON主体 我将这些值视为params中的映射,但其中插入了一个“id”。如果我传递一个“id”,它就会被覆盖。原始主体可能在康涅狄格州的某个地方,但我不知道如何找到它。您可以在结构上使用body\u参数 e、 g 参数[“id”]将为“1” body_参数[“id”]将为7 希望这对你有用 因为您只能访问一次,所以访问请求主体要复杂一些。您需要绕过端点中的Plug.parser,手动读取正文 从插件文档:

Elixir 在Phoenix routes.ex中动态定义顶级路由

我想做的是根据数据库中特定模型可用的段塞动态路由顶级路径,就像GitHub对用户/组织名称(如https://github.com/elixir-lang和https://github.com/phoenixframework,但在Phoenix的框架中我似乎无法理解它 到目前为止,在我的路线中,我尝试的是: Enum.each(MyApp.Repo.all(MyApp.User), fn section -> get "/#{user.username}", UserControll

Elixir 使用Phoenix.HTML.Form“添加并显示错误消息”;“带连接数据”;

我有一个带有textarea的简单表单,用户将在其中键入(或复制粘贴)json字符串。表单将被发送到我的控制器操作,我将验证json字符串,如果可以,我将创建一些记录,一切正常 为了将表单发送到我的控制器操作,我目前使用“带连接数据”,因此我没有模型/变更集 <%= form_for @conn, @action, [as: :match], fn f -> %> <%= textarea f, :json, rows: 20 %> <%#= erro

如何从Elixir调用第三方Erlang模块?

我有一个使用mix的长生不老药项目。我已经使用了一些内置的erlang模块,但现在我需要使用在Github上找到的第三方模块 如何从Elixir导入、构建和调用第三方Erlang模块 编辑:我现在感兴趣的模块位于,edmonds_karp模块。添加第三方erlang包在elixir中非常容易。如果包不在Hex.pm上,那么您可以使用github url。例如,在mix.exs中: defp deps do [ {:erlang_algorithms, github: 'aggelgi

Elixir 为什么要声明一个永远不会使用的变量或函数?(_foo)

我是Elixir的新手,在阅读了下划线变量/函数之后,我对它们的实际用例有点困惑。为什么要费心定义一个永远不会使用的变量或函数 我很熟悉在模式匹配中使用uu,当您想忽略匹配的某些部分时,它们可能是密切相关的,但我正在努力解决这个问题。以这种方式声明的函数将被排除在导入之外,但可以在内部使用 函数参数(也是变量)必须设置,因为arity是固定的,下划线使它们的使用更加透明:我知道我的回调得到3个参数,但我只需要第二个 我不知道是否有以这种方式声明的正常变量。以这种方式声明的函数将从导入中排除,但可

Elixir-如何返回可由另一个函数通过iex控制台拾取的值?

对于Elixir来说,我刚刚开始编写一个简单的游戏,它将有一个readFrom/1函数来读取输入并相应地玩游戏,然后是一个print/1函数来打印该游戏 由于它们将通过iex一个接一个地调用,如何使print/1函数打印readFrom/1的结果?在任何其他语言中,我只需将需要的值保存在变量中,然后使用print/1函数获取它们 由于需求,我不得不这样做,但我找不到任何能帮助我解决这个问题的方法 谢谢 您可以使用管道: iex> args |> readFrom() |> pr

Elixir 如何连接插头。具有插头功能的路由器

我正在尝试用Elixir建立一个非常简单、基本的HTTP API。我认为使用Phoenix做这样的事情完全是过火了,所以我想简单地使用Plug。我可以这样设置一个基本路由器: defmodule Example.Router do use Plug.Router plug Plug.Logger plug :match plug :dispatch get "/" do data = do_something_with_conn(conn) se

Elixir 查找一个地图中存在但另一个地图中不存在的关键点

我有两张地图。找出一个映射中存在哪些键,而另一个映射中不存在哪些键的方法是什么?使用with是最简单的方法: #假设您的两个地图是: map_a=%{a:1,b:2,c:3,d:4} map_b=%{c:3,d:4,e:5,f:6} #获取map_a中存在但map_b中不存在的密钥 a_b_diff=Map.keys(Map_a)--Map.keys(Map#b)#=>[:a,:b] #获取map_b中存在但map_a中不存在的密钥 b_a_diff=Map.keys(Map_b)——Map.k

Elixir 在模板中传递默认参数的最佳方法

有时,在我的模板中,我想为一些CSS属性定义默认值,但这些值在渲染函数中没有作为参数传递,如下所示: height: <%= if @height do %><%=@height%><% else %>"50px";<%end%> 高度:“50px”; 我想知道是否有更好(不太冗长)的方法来做这件事。你可以利用以下事实 @变量也可以通过名为赋值的映射访问 使用括号语法访问映射中不存在的键将返回nil,而不是引发异常 |如果左侧值为nil,则返回

Elixir 重新启动phoenix.server而不退出的替代方法

除了退出(如按CTRL+c两次或中止等)并再次启动之外,还有什么方法可以重新启动mix phoenix.server 这样做的背景是:我使用foreman启动phoenix服务器加上test runner等。如果我必须退出服务器,一切都会被终止,我必须完全重新启动foreman。如果我可以触发phoenix.server作业的重新启动,其他所有操作都可以保持运行 由于我使用tmux并在不同的窗格中运行foreman命令,这将非常有帮助。通过命令行触发的命令也可以。您可以在iex的会话中启动服务器

使用Enum.reduce Elixir以很少的毫秒增加日期

我一直在使用Enum.reduce Enum.reduce(email_array, {[], [], []}, fn email, {shares, share_requests, changes} = _acc -> end) 我将在每个减速器上传递一个方法,如下所示 CameraActivity.log_activity(caller, camera, "shared", %{with: email, ip: requester_ip}, done_at) 在done_at中,

Elixir 日期范围的EXTO查询

我必须根据模型中的时间戳查询日期范围。 到目前为止,我所尝试的是 str="2017-12-18" {:ok, ed}=Ecto.Date.cast(str) ed= ed |> Ecto.Date.from_erl |> NaiveDate.from_erl! Repo.all(from l in Log, where: l.inserted_at == ^ed) 然而,postgres中的日期以日期时间的形式出现,例如2017-12-18 19:58:01.414 但我只想查

Elixir Repo.insert返回预加载的关联?

返回{:ok,struct},但struct没有预加载的关联。 我是否被迫选择查询以预加载其关联?或者我可以避免一个无用的查询吗?你必须自己调用Repo.preload/3Repo.insert |>Repo.preload(:posts)像这样?是的,像那样。但是,您刚刚插入录制的,很可能没有要预加载的内容。:)因此,如果您愿意,也可以显式地将字段设置为空列表。如果您使用Repo.insert,是的。如果只使用Repo.insert,则必须首先打开元组@JoséValim,它可能属于另一条记录

Elixir ExUnit:在完成测试套件之前运行函数?

在每个测试之前调用setup回调,在任何测试运行之前,每个模块只调用一次setup\u all回调 在这种情况下,我需要在整个测试套件运行之前准备一些东西。只有一次。我使用的是一个非标准的数据库,设置包含所有索引的模式需要一点时间。因此,我希望通过不经常这样做来加速测试 有办法处理这个问题吗?您可以将初始化代码放入test/test\u helper.exs中。该文件中的任何代码都将在测试运行之前执行,并且只执行一次。正如@mudasobwa指出的,不管代码是在ExUnit.start()之前还

Elixir 架构中的默认值

所以我有我的\u perfect\u random函数,它返回字符串的值 schema "something_greate" do field :my_amazing_field, :string, default: my_perfect_random timestamps() end 错误是 undefined my_perfect_random/0 该函数写在同一个模块中。我尝试使用MyModule.my_perfect_random,但得到了相同的错误 请帮助我修复它您不能将函

Elixir 从以前的变更集中获取数据

我有一套机场机票的数据: %{ class: "economy", legs: [ %{date: "2018-08-01", from: ["FRA"], to: ["LON"]}, %{date: "2018-08-10", from: ["LON"], to: ["FRA"]} ], passengers: %{adults: 1, children: 0, infants: 0} } 我正在使用cast\u assoc进行腿部训练: ... |>

Elixir 默认ExUnit.Case使用'async:true`

的文档中说,:async选项默认为false,并且“仅当测试未更改任何全局状态时才应启用”。在我正在进行的一个项目中,可以从源代码中看到,async属性会消失 可能pull请求的执行方式类似于: - async = !!unquote(opts)[:async] + async = Keyword.get( + unquote(opts), + :async, + Application.get_env(:ex_unit, :async_all, false) + ) 谢谢我通常会

Elixir Using has_many-在使用UUID(字符串)时属于关联

我试图将两个模型(用户和国家)关联起来,其中: ·一个国家有很多用户 ·用户属于一个国家/地区 另外,我使用UUID作为这两个模型的主键,因此我没有:id类型来关联它们,只有字符串来关联它们。 国家是静态的,但我会创建很多用户 我应该如何将这两个模型联系起来,以及我应该在模式中的两个函数中写入哪些参数(has_many&归属)?我应该调用哪个函数来关联它们:cast\u assoc、build\u assoc或put\u assoc 谢谢 @primary_key {:uuid, :stri

Elixir 监护人文件don';t让我生成JWT令牌

我正在使用{:guardian,“~>1.0”}为我的项目生成一个令牌,但它给了我一个错误 这是我的监护人档案的密码 defmodule Dailyploy.Guardian do use Guardian, otp_app: :dailyploy def subject_for_token(user, _claims) do sub = to_string(user.id) {:ok, sub} end def subject_for_token(_, _)

Elixir 什么是'has_many'和'many_to_many'关系的'exto.Changeset.assoc_constraint/3'的等价物

我想验证一个给定的资源在另一个表中是否有相应的资源 有了归属关系,我可以使用exto.Changeset.assoc\u constraint/3函数来实现这个目标 当我尝试将它与many\u-to\u-many关系一起使用时,会出现以下错误: ** (ArgumentError) assoc_constraint can only be added to belongs to associations, got: %Ecto.Association.ManyToMany{cardinalit

Elixir 将'mix hex.docs offline'的结果输出为EPUB而不是HTML

我通过mix Hex.docs offline PACKAGE\u NAME保存Hex包文档的脱机副本。这将在~/.hex/docs/hexpm/PACKAGE\u NAME/中创建一个HTML目录 我想做同样的事情,但是输出为EPUB而不是HTML,理想情况下,一步完成 如何下载离线EPUBs以获取Hex.pm上托管的包的文档?从2019年12月开始,是的,但似乎有。从2019年12月开始,是的,但似乎有

在Elixir中终止主管进程时终止所有链接的子进程是否是一种良好的做法?

我正在读《小长生不老药和OTP指南》来学习长生不老药,书中有一章作者从头开始建立了一个导师。有一部分,作者实现了一个函数来终止主管进程,而主管进程又在终止自身之前终止所有链接到它的子进程 据我所知,如果您有链接到特定进程的进程,并且如果其中一个进程被终止,那么所有进程都将被终止,对吗?那么,为什么我们需要在杀死主管之前杀死所有的子进程,这只是一种最佳实践吗 顺便说一句,这本书是这么说的 在您终止 主管进程,您需要终止它链接到的所有子进程,这由terminate_children/1私有函数处理

Elixir Phoenix LiveView表单_用于在POST上引发NOROUTERROR

因此,我正在尝试制作一个phoenix live view应用程序,当我试图将它实现到我已经存在的项目中时,遇到了一个问题。我使用phoenix.html提供的表单_制作了一个表单,它在我的live套接字上向服务器发出post请求。这不应该发生,我不认为,因为我成功地做了演示,它允许我张贴到现场查看。以下是错误: [debug] ** (Phoenix.Router.NoRouteError) no route found for POST /test_live/1 (OkayfivePhxWe

Elixir 如何将同一个表与EXTO同时关联

我有以下两张桌子。一个是成员表。另一个是订单表。 订单表中有4个引用include由更新为MEMBER.id。所有id都与Member.id关联 ------ MEMBER ------ id name ------ ORDER ------ id order_member_id delivery_member_id signed_member_id update_by 我写了order.ex,就像下面这样。但是,它不起作用 defmodule Sample.Store.Ord

Jason在Elixir中将二进制编码为UUID

我正试图想出一种干净的方法来覆盖for二进制文件,这将允许我从二进制文件中提取uuid。以下是我在理论上想做的: 定义Jason.Encoder,用于:位字符串do def encode(二进制,opts)何时为二进制(二进制)do 使用false而不是尝试全局覆盖位字符串的协议,您可以将UUID包装在自己的结构中,并为该结构实现Jason.Encoder协议: defmodule jsonuid do defstruct[:uuid] 定义Jason.do def encode(%jsonui

Elixir:reduce over list,其中reducer函数接受迭代列表的子集作为参数

使用下一个元素和累加器调用Enum.reduce中的函数。我想要这个,但不是下一个元素,reducer应该接受到目前为止迭代过的列表的子集。累加器可能是任意的,因此可以收集已经访问过的元素。有点像下面应该工作(未经测试) [1,2,3] |>Enum.reduce({[],0},fn e,{head,acc}-> head=head++[e] acc=acc+枚举和(头) {行政协调会主席} (完) |>要素(1) #⇒ 10 结果应该是10,因为我们加起来1三次,2两次,3一次

Elixir 还记得我在凤凰城吗

起初,我选择使用put\u session来存储用户id,因为会话哈希不能被篡改。但是,会话cookie似乎只在浏览器会话期间存在。当用户重新打开浏览器时,浏览器将消失,用户必须再次登录 我了解到另一种选择可能是为每个用户生成一个安全的随机令牌,并将其存储在数据库中,然后将其放入具有高过期日期的常规cookie中。但是,如果这个cookie不具有篡改保护(但我可能是错误的),并且连接并不总是HTTPS,那么我猜想任何人在用户和服务器中间监听HTTP都能够劫持用户会话。 因此,问题是如何以安全的方

Elixir 使用管道运算符时获取第一个参数

管道操作员是一件很好的事情。 例如,我希望在Enum.reduce中使用enumerable,或者其他什么: foo |> bar(...) |> Enum.reduce([], fn x, acc -> acc ++ [Enum.at(<enumerable>, x)] end) 当在匿名函数中使用管道运算符以及&1时,第一个参数可能存在语法糖?最好只移动整个枚举。将减少到它自己的函数,该函数接受一个参数并命名,这样每个人都能理解它在做什么重新排列不是最具描述性

Elixir 如何在Phoenix框架中呈现原始JavaScript数据

我在控制器中得到了一个列表: data = ["one", "two"] 我希望在eex模板中呈现为: <script> var data = ["one", "two"] </script> 风险值数据=[“一”、“二”] 我怎么能做到呢,我尝试了var data=,只得到了var data=[1,2]从中得到了答案 这是我在最后一次比赛中的表现: <%= raw(Poison.encode!(@data)) %> 看看这个问答:@OnorioCa

Elixir Ecto/SQL-原子获取/设置

我有credits列需要检查(如果值>0),同时减去1(多个进程/连接将同时轰炸db,因此需要以原子方式完成) 仅仅启动事务并从中获取+更新行就足够了吗?比如: Repo.transaction(fn -> user = Repo.get(User, user_id) if user.credits >= 1 do MyRepo.update!(%{user | credits: user.credits - 1}) # ... If above works,

Elixir 如何连接两个名称以创建一个函数名

在我的模板中,我尝试动态定义其中的路径帮助器: <%= link "Edit", to: @options[:resource]_path(@options[:conn], :edit, @options[:resource]) %> 因此,我想使用@options[:resource]预先添加资源名称并创建正确的路径帮助器,如:post\u path(@conn,:edit,post) 因为这是一个函数名而不是字符串,所以我尝试过的所有方法({},++)都不起作用。因为您想动

Elixir 如何计算字符串?

假设我有一个字符串,代码如下: "[1, 2, 3, 4, 5]" 考虑到我已经知道它是字符串中的一个列表,计算它并将其转换为实际的长生不老药列表的简单方法是什么 你在找什么 计算字符串给定的内容 示例: {result, _} = Code.eval_string("[1, 2, 3, 4, 5]") 你比我快了27秒@是的,对不起:)你的答案更完整,但我已经用了第一个答案!这是eval_string/3,不是吗?它的eval_string/2技术上都是正确的。当使用默认参数时,将使用多

使用元组作为Elixir中函数的参数

我正在用长生不老药写一个游戏引擎。(是的,我知道这不是一种天生适合这种情况的语言——重点是看看非典型语言的使用如何影响结果的结构。) 因此,我有几个主管在游戏开始时运行——但他们应该具体负责什么取决于游戏。我的想法是让用户在config.exs文件中列出必要的子元素,加上参数和选项,作为元组列表,然后主管自己只需从应用程序环境中提取这些元组,并将其内容用作worker\2(或worker\3,视情况而定) 但是,我找不到任何与Python的元组解包等效的长生不老药。我可以自己使用一个简单的函数来

Elixir json响应的奇怪格式

我有一个凤凰应用程序,基本上是API。我有以下看法: 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) stu

Elixir 后处理枚举到列表

我有这个管道 events |> Task.async_stream(&expensive_func/1) |> Enum.to_list 将返回以下数据: [ok: {item}, ok: {item} ... ] 因此,为了得到一个项目数组,[item,item]我对它进行了如下后处理: events |> Task.async_stream(&expensive_func/1) |> Enum.to_list |> Enum.

上一页 1 2 ...  77   78   79   80    81   82   83  ... 下一页 最后一页 共 125 页