在Elixir中实现外/内循环的最佳方法

在Elixir中实现以下代码的最佳/正确方法是什么: foreach( var item in items) { foreach(var num in get_nums_from(item)) { yield return is_valid(num) ? num : -1; } } 非常感谢。循环的自由翻译如下: Enum.flat_map(items, fn (item) -> Enum.map(get_nums_from(item), fn (num

Elixir 管道操作员行为

根据: |>符号是管道操作符:它只是从左侧的表达式获取输出,并将其作为输入传递给右侧的函数调用 Enum模块中的所有函数都很重要 那么下面的陈述有什么不同呢?为什么最后一个返回不同的结果 iex(1)> 1..1_000 |> Enum.reverse |> Enum.take 5 [1000, 999, 998, 997, 996] iex(2)> (Enum.reverse 1..1_000) |> Enum.take 5 [1000, 999, 998, 9

Elixir 如何在链接中指定多个参数

我的路由器里有这个。例如: resources "/games", GamesController do get "/scores/:student_id", GameScoreController, :new post "/scores/:student_id", GameScoreController, :create end 现在我用以下方式来称呼: link(student.name, to: game_game_score_path(@conn, :new, @game, s

Elixir 如何打印conn内容?

我尝试了以下方法 def index(conn, _params) do Logger.debug conn ...... 但我明白了 protocol String.Chars not implemented for %Plug.Conn 我甚至试过Apex,但也没用。你应该可以用它来漂亮地打印conn: Logger.debug inspect(conn) 使用inspect conn,pretty:true 。。。或: inspect conn,pretty:tru

Elixir-无法编译依赖项idna

错误消息: mix.exs defmodule Wham.Mixfile do use Mix.Project def project do [app: :wham, version: "0.0.1", elixir: "~> 1.0", elixirc_paths: elixirc_paths(Mix.env), compilers: [:phoenix] ++ Mix.compilers, build_embedded

Elixir Phoenix框架和验证嵌入

鉴于以下代码工作正常: image_1 = %Image{naturalHeight: "100", naturalWidth: 100} diffbot_objects = [ %DiffbotObject{ availability: true, images: [ image_1 ] } ] changeset = Ecto.Changeset.change(product) changeset = Ecto.Changeset.put_em

Elixir 监督gen_tcp客户端/服务器

我正在使用Phoenix框架,并尝试配置一个进程,该进程将连接到另一个服务器,该服务器将为我提供一些提要。我正在使用Erlang的gen_tcp来实现这一点。我想稍后将这些提要发送给与频道连接的客户机(其实没那么重要) 我希望它受到监控,因此如果没有与远程资源的连接,应用程序不会中断,而是等待连接恢复。如果有任何错误,我希望它重新启动的主管 这就是我所尝试的: defmodule HelloPhoenix.TestServer do use GenServer def start_li

Elixir 为什么这个erlang函数没有定义?

因此我可以在elixir中访问erlang函数,通过:erlang访问它们,但未定义 我认为这个计时器不是标准的erlang模块,需要被要求/导入,但我不知道怎么做 另外,如果timex没有像erlang函数这样的高精度计算时间戳差异的函数,请不要建议它。我没有发现阅读文档 使用 iex(1)> a = :erlang.timestamp {1458, 585479, 931609} iex(2)> b = :erlang.timestamp {1458, 585484, 19771

在分块模式下保持Elixir插头打开

是否可以在分块状态下保持连接打开几秒钟 在请求中,我创建了几个进程,这些进程需要5秒钟才能完成,之后我想通过区块向客户端发送响应,但连接已关闭 我正在和邮递员一起测试,我有以下标题: “连接”:“保持活动”,“保持活动”:“超时=10000” 这是我的最小化应用程序,输出总是“InitEnd” 期望的结果是:“init123456779end”或类似的内容: defmodule AlivePlug do import Plug.Conn def init(opts) do op

Elixir 凤凰城的定制关联处理

我想手动和有条件地处理创建模型之间的关联。我有一个带有标记功能的应用程序,因此有三个模型:标记、可标记资产和连接模型AssetTag。我希望资产能够处理使用预先存在的标记以及用户在创建/更新资产时可以在资产的“标记”属性中指定的新标记进行标记的情况。我猜传入的JSON将如下所示: { "item_number": "ITEM_NUMBER", "name": "Sample Asset", "description": "A sample asset.", "type": "pr

Elixir 是否可以从不同的主题跟踪用户的状态?

我将Phoenix框架用于带有WebSocket连接的Elixir应用程序。我有两个不同的主题,一个面向用户,另一个面向管理员。管理员应该看到哪些用户在场。我决定使用凤凰城的Presence模块。不幸的是,您只能将当前状态发送到开始跟踪的套接字 示例代码: def join("users", params, socket) do socket |> assign(:user_id, params[:user_id]) send(self, :after_join) {:ok,

Elixir 伞形结构中的web应用程序集成测试问题

我正在开发phoenix应用程序。此应用程序是伞形应用程序的一部分。在这个保护伞中,我有一些负责应用程序不同领域的小应用程序,它们是: 凤凰网api(“api”) 核心业务逻辑(“核心”) 用户身份验证(“auth”) 数据库模式(“db”) “api”依赖于“core”和“auth”,而这两个应用程序依赖于“db” 只有“db”应用程序有一个ecto repo,其他所有应用程序都没有。回购由“db”应用程序启动,并受监督 现在我想在“api”应用程序中测试我的控制器。这就是我遇到的一个问题

您如何判断Elixir中的函数来自何处?

例如,未在此模块中的任何位置定义。您还可以看到它是usesPhoenix.Channel,但它也没有在任何地方定义assign。事实证明,assign是在中定义的,我知道的唯一原因是,Phoenix.Socket中定义了一个名为的宏,它使用的是Phoenix.LiveReload.Channel。显然,不知何故,这赋予了Phoenix.LiveReload.Channelassign功能 除了grep之外,您应该如何跟踪该逻辑。比如,如果我只是看一下凤凰城.LiveReload.Channel,

Elixir 如何将应用程序作为依赖项使用两次

Elixir/Erlang应用程序可能具有依赖的应用程序。如文件所示: 您可以配置生成的 通过在mix.exs中使用 以下选项: • :applications - all applications your application depends on at runtime. By default, this list is automatically inferred from your dependencies. Any extra Erlang/Elixir dependency

Elixir 跟踪“使用”其他模块的模块

我试图跟踪编译时使用另一个模块的所有模块,并在运行时获取所有这些模块的列表: defmodule BaseModule do defmacro __using__(_) do quote do # common behaviour end end end defmodule A do use BaseModule end defmodule B do use BaseModule end defmodule C do use BaseMod

Elixir从两个列表中删除常用元素

我想从列表a中删除列表b中的元素。 执行此代码后,列表a正在打印[1,2,3,4] defmodule Test do def listing do a = [1,2,3,4] b = [3,4,5,6] Enum.each b, fn elemB -> a = Enum.filter(a, fn(x) -> x != elemB == true end) #IO.inspect a end IO.inspe

Elixir 遍历枚举时出错

我得到了以下变量 variant_option= {"option", [{"value", "www.abc.com"}, {"data-value", "5"}], ["Select"]} 我想做的是获取第三个元素-->(“选择”) 但是我得到了这个错误 protocol Enumerable not implemented for {\"option\",...........} 您只有一个元组,而不是元组列表。您的代码将与以下列表一起使用: variant_option = [{"o

Elixir 在EXTO中组合两个where查询

我正在尝试创建一个EXTO查询,当两个where查询都满足时,该查询将返回一个结果。当我运行应用程序时,我得到错误函数nil.title/0未定义或私有。这是因为我没有正确的查询吗?我想要一个和两个在哪里 def next_prod do Post |> where(postStatus: "published") |> where(next_prod: "yes") |> Repo.one() end SQL查询 您将看到有一条记录应该与EXTO查询匹配 iex(1)&

Elixir typespec中二进制、String.t、char_list和[char]之间的差异

定义typespec时,binary、String.t、char_list、[char]等之间有哪些不同 @spec method(binary) :: binary 及 它们相等吗?医生说: 用于长生不老药字符串的二进制文件 用于Erlang字符串的字符列表。 定义为[char] String.t与binary相同,请参见其定义 char\u list不仅仅是一个简单的字符列表。Erlang中的unicode模块将其定义为: maybe_improper_list(char() | uni

Elixir 如何将字符串列表转换为整数列表?

我试图请求一个数字列表(例如:“123456”)并输出一个整数列表(例如:“[1,2,3,4,5,7]”)。我想出了以下代码: IO.gets ("Enter a list: ") |> String.trim |> String.split |> Enum.map(&String.to_integer/1) 这将无法编译,并导致以下错误: == Compilation error in file test.ex == ** (ArgumentError) argum

Elixir 当iex-S在项目上混合时出错

Elixir版本:使用OTP20编译的1.6.0 二郎OTP:20 当我设置MIX_TARGET=rpi3时,我安装了Neurs并创建了新的Neurs项目。我得到这个错误 **(FunctionClauseError)neurs.Runtime.Kernel.UEvent.handle\u info/2中没有匹配的函数子句 为什么找不到定义?上面代码中定义的&handle\u info/2有两个函数头: handle\u信息(:discover,s) handle\u info({{,{:dat

如何使用Plug/Phoenix in Elixir发送HTTP预告片

我在中找不到关于发送预告片的任何信息。有可能吗?有了对HTTP/2的支持,这对于像GRPC这样的应用程序很重要,现在还不是。好消息是Plug v1.5支持Cowboy 2+,它确实支持HTTP 1.1和HTTP 2的尾部头。因此,我们非常感谢您的请求

Elixir:将位列表转换为二进制

我有一个代表位的整数列表;e、 g.[1,0,0,1,1,0,0,1,0,0,0,1,1,1,1,0,0]我想把它转换成二进制,即,我知道列表的长度总是8的倍数 我查看了Elixir文档,但没有找到任何帮助(我查找了确切的函数,但也查找了向二进制文件添加位的函数) 我已经写了一个函数来解决这个问题(如下),但我希望有更好的方法,因为我觉得我的函数看起来太复杂了 def list_to_binary(l) do if length(l) >= 8 do << Enu

Elixir 长生不老药:使用&;运算符从命名函数中获取匿名函数

所以我在读这本书,在某个时候它说: 还有第二种形式的函数捕获操作符。你可以给 它是现有函数的名称和arity(参数数量), 它将返回一个调用它的匿名函数 但我不明白为什么会有人想这么做。如果您知道可以将命名函数和未命名函数绑定到变量(如果您愿意),那么您可以从中获得什么好处呢 有一些简单的函数是很常见的,比如 Enum.map(list, fn(element) -> element.id end) 或者只是 Enum.map(list, &(&1.id)) 经过一些练

Elixir 使用片段&;与博士后及;外星人?

我正在努力使这项工作与博士后和体外受精。下面的查询在没有group_by的情况下运行良好,但我需要在fragment字段上进行分组,它似乎看不到。知道有什么问题吗 def query_clicks do from(Click) |> select( [c], [ fragment("date_trunc('hour',?) as hour", c.inserted_at), c.link_id] ) |>

Elixir 使用Enum.group_by对映射键子字符串进行分组

我有一张地图看起来像: z = %{ "dd_1_a" => 1, "dd_1_b" => 2, "dd_1_c" => 3, "dd_2_a" => 4, "dd_2_b" => 5, "dd_2_c" => 6 } 我试图将其转换为一个表单列表: [ {a: 1, b: 2, c: 3}, {a: 4, b: 5, c: 6} ] 我已经做到了这一点: z |> Map.new(fn {k, v} ->

Elixir 将naive_datetime转换为utc_datetime_usec

我有一个模式如下的模型: schema "my_things" do (...) field :shifted_inserted_at, :utc_datetime_usec timestamps() end timestamps()类型默认为:naive\u datetime 我需要在处移动我的inserted\u值,并将其插入处的shifted\u inserted\u 如何将NaiveDatetime转换为正确的格式?我试过这样的方法: shifted_i

wxmac elixir尝试运行时出错:iex中的observer.start

在iex中运行:observer.start后,我收到以下消息。我尝试卸载并重新安装Elixir和Homebrew,但没有成功 objc[58977]:类wxNSProgressIndicator在/usr/local/ceral/wxmac/3.0.5.1_1/lib/libwx_osx_cococoau_core-3.0.0.0.5.0.dylib(0x1f5e9fc0)和/usr/local/opt/wxmac/lib/libwx_osx_cocoau_core-3.0.dylib(0x1

Elixir 如何将字符串日期转换为日期时间格式

如何转换这样的字符串日期 “20201228” 像这样的事情 “2020-12-28T00:00:00”正如Sahil所指出的,如果您习惯了strftime格式,使用timex可能是一个简单的选项,例如 iex> Timex.parse!("20201228", "%Y%m%d", :strftime) ~N[2020-12-28 00:00:00] 但是,如果要避免安装另一个依赖项,可以使用模式匹配编写自己的字符串解析,例如: iex> &

Elixir:如何将服务器发送的事件流作为客户端使用?

我的Phoenix应用程序需要与第三方API集成,该API通过以流格式发送数据。我第一次了解SSE;SSE流看起来很像WebSocket,只是它们是单向的,而且更简单 我看到了很多关于如何从Elixir应用程序作为服务器发送SSE数据的建议(例如),但我没有看到关于Elixir应用程序如何作为客户端使用SSE数据流的建议。我看到的文章似乎假设浏览器中的客户端是JS,但我知道Ruby SSE客户端存在(,),因此我认为Elixir应用程序不能充当SSE客户端没有很强的技术原因 在Elixir应用程

OTP_DSL未使用Elixir 14.3/Mix编译

当使用elixir 14.3版本的otp_dsl库执行“mix deps.compile”时,其他人是否也面临同样的问题。如果可能,请分享决议 Compilation error on file lib/otp_dsl/genfsm.ex == ** (CompileError) lib/otp_dsl/genfsm.ex:46: unsupported option :hygiene given to quote (elixir) src/elixir_exp.erl:487: :elixir

Elixir 如何测试函数保护子句中的结构值?

在Phoenix/Elixir应用程序中,在这个小小的卫生功能中,当用户没有输入电子邮件时,我遇到了一个问题 我正在使用结构来处理数据。还有一个简单的函数,它(目前)只需去除空白并更新结构(map)。到目前为止,它工作得很好,但是当字段email为nil时,我得到一个错误 **(FunctionClauseError)String.Unicode.strip/1中没有匹配的函数子句 因此,我引入了一个guard子句来检查这种情况,然后只对用户名进行清理 defmodule MyApp.User

Elixir代理元组返回

我正在学习下面的教程 我和代理一起工作,我不明白这条线是怎么运作的 def pop(door) do Agent.get_and_update(door, fn [] -> {:error, []} [h|t] -> {{:ok, h}, t} ## returns {:ok, h} why not {{:ok, h}, t} end ) end 输出 iex(5)> Portal.Door.push(

Elixir 长生不老药凤凰应该把全局控制器助手放在哪里

我需要在几乎所有控制器中使用以下功能。Elixir中是否有类似ApplicationController的模块 我们应该把这些放在哪里 def redirect_if_unauthorized(conn = %Plug.Conn{assigns: %{authorized: false}}, opts) do conn |> put_flash(:error, "You can't access that page!") |> redirect(to: "

Elixir 用Arc.exto上传

我目前正在用Phoenix创建一个小API。除了文件上传,一切都很好 以下是我在日志中得到的信息: 参数:%%{“picture\u version”=>%%{“file”=>%Plug.Upload{content\u type:“image/png”,文件名:“spectrum.png”,路径:“/tmp/awea/Plug-1456/multipart-745660-733498-2”},用法“=>“main”} 然后,Arc库中出现错误: Server:localhost:4000(h

Elixir 如何对管道中的布尔值求反?

考虑以下代码: defmodule T do def does_not_contain?(s, t) do s |> not(String.contains?(t)) end end 这会在编译时产生以下错误: ** (CompileError) iex:3: undefined function not/2 我也尝试过这样的构造: defmodule T do def does_not_contain?(s, t) do s |> String.co

Elixir 如何将代码封装在模块、捆绑包或插件中?

我正在寻找一种方法来构建类似于symfony中的bundle或CakePHP中的插件的东西。例如:在用户模块中,所有控制器、模板和视图都将位于一个文件夹中,以便我可以轻松访问它们 我想基于功能创建类似的模块,例如,支付模块、库存模块等 在当前的体系结构中,我可以将所有控制器、所有视图放在一起。因为我的项目非常大,所以现在它有将近140个控制器等等,在我看来非常混乱。phoenix为模块化代码提供了什么?在开始时,请检查这一点,但我也强烈建议您检查由phoenix的创建者、Elixir和guys的

Elixir 在调用匿名函数之前如何阻止?

我使用的库执行异步请求(push),该请求总是返回ok。它使用实际响应调用回调,无论是ok还是错误 callback = fn(response) -> # handle error or ok end :ok = Pigeon.APNS.push(n, callback) # push returns immediately, but I want to block # until callback is called and return that response 在本例中,

Elixir 人性化的线头修剪

我想用人性化的方式修剪一根绳子 foobar="John Doe - CEO @ xyz" def human_trim(input, length) do ... end 当human\u trim(foobar,10)时,输出应为John Doe人体修剪(foobar,7)应导致John。因此,按空格拆分,然后检查匹配的内容,直到达到10个字符为止。边缘大小写将是一个完全没有空格的字符串。它必须在-3处削减,并在末尾添加“…” 我能想出一个解决这个问题的方法,有一百万个if/else

Elixir 未定义的函数put_req_头/3

我在Phoenix应用程序中有以下模块。此代码基本上是共享规范示例。看起来是这样的: defmodule TattooBackend.CurrentPasswordRequiredTest do @moduledoc """ This module defines tests that are testing api current password requirement. """ import Phoenix.ConnTest alias TattooBackend.W

Elixir 返回与Phoenix中JSON错误请求相同的格式

我目前有一个Phoenix应用程序,它同时具有JSON和HTML端点 我想返回最适合给定请求的错误,但它始终默认为呈现(“XXX.html,41;函数,即使请求的格式是application/json 有没有一种方法可以为application/JSON类型的请求返回JSON,并为其他所有类型的请求返回HTML?您可能需要检查config.exs文件中的render\u errors选项(请参阅),并添加JSON格式以及HTML config :my_app, MyApp.Endpoint,

Elixir `Task.async`在测试中的`exto.Multi`内的查询超时

我正在努力在exto.Multi中的一个步骤中执行异步操作。在这里,我只提供最简单的版本来描述我的问题: defmodule MyModule do do my_function(repo \\ Repo) do Ecto.Multi.new() |> Ecto.Multi.run(:example, &perform_example(&1, repo)) |> repo.transaction() end def perform

为什么';Elixir/Phoenix 1.2中的缓存控制值是否更新?

我通过Phoenix 1.2安装了JSON api 在router.ex中,我将JSON端点通过管道传输,如下所示: pipeline :api do plug :accepts, ["json"] end 当我尝试向JSON响应中的响应头添加缓存控制值时,我将通过以下方式发送回浏览器,向GET端点发出请求: conn |> put_resp_header("cache-control", "max-age=2000") 我看不到缓存控件已更新 req_header

Elixir 长生不老药如何从外太空获取地图

我想从EXTO获得一个数据结构,它允许在我的HTML中编写类似这样的iteraly: <%= genders.name %> 现在我的控制器运行良好 defmodule HexProjectWeb.LandingController do use HexProjectWeb, :controller alias HexProject.Gender def index(conn, _params) do genders = HexProject.Repo.al

在Windows上运行Elixir应用程序:Can';设置短节点名

我使用mix-release构建了一个Elixir应用程序,当我使用运行它时,我发现以下错误: 2020-02-08 19:57:52.981000 args: [] format: "Can't set short node name!\nPlease check your configuration\n" label: {error_logger,info_msg} 我查看了fsutil并更改了我的计算机名(Windows 10),但没有任何帮助 我也尝试了@ale

Elixir 为什么Ecto有一个维护数据库选项?

我最近查看了的文档,注意到它有一个用于维护\u数据库的选项。它说它是在删除或创建数据库时使用的数据库。但是为什么它需要这样做呢?因为在删除或创建数据库时,您大部分时间都在使用一个混合任务,而此时它将是一个控制器,因此无论如何,它不会使用持久连接来连接到数据库 我只是被这个选项弄糊涂了,因为它看起来很奇怪,我想知道是否有人能解释一下如何以实际的方式使用它,以及它为什么会存在 如果这是询问此类讨论问题的错误媒介,请告诉我,我会将其移至其他位置 mix首先不包括在发行版中。想象一下,当您维护一个任务关

Elixir 多种条件下的外接连接

假设我有三个模型: user: has_one wallet wallet: belongs_to user transactions: belongs_to wallet 我正在尝试获取给定用户的所有事务。我可以使用的SQL如下所示: def user_transactions_query(id) do from tr in Transaction, join: wallet in assoc(tr, :wallet), join: user in assoc(walle

通过Elixir中的模式匹配动态生成不同算术数的函数?

在某种程度上,对于Ocaml,我希望在Elixir中动态生成具有不同算术性的函数,这些函数可用于针对不同输入的模式匹配 例如,如果我在运行时获得列表项的无限输入,例如 [1, 2, 3] [1, 2, 1] [1, 2, 3, 4] # ... etc ... 我想在如下定义的模块上生成函数: defmodule Example do def func([x, y, z]), do: [x, y, z] def func([x, y, x]), do: [x, y, x] def

上一页 1 2 ...  67   68   69   70    71   72   73  ... 下一页 最后一页 共 125 页