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 使用宏替换映射项

如果这是一种正确的/无异味的做事方式,我将非常感谢您能帮助我理解这里发生了什么,并作为第二个想法 我在自己的文件中有两个模块: defmodule ModuleA do def mapA do %{a: 1, b: 2, c: 3, d: 4 } end def mapA_lookup(id) when is_atom(i) do Dict.get(mapA, id) end end 及 现在当我使用 ma

在Elixir中运行时获取字节码

有没有办法在运行时获得Elixir中模块的字节码 我能够将使用iex创建的模块的字节码保存到变量中,但我真正想做的是获取已加载模块的字节码 我查看了模块和代码函数,但没有找到我需要的。有人能给我指出正确的方向吗 这很有效 :code.get_object_code(Map) 但是,当我试图获取模块的字节码时,我写的是:“error” #输出显示模块已加载 hello :ok #用我写的模块试试看 :code.get_object_code(Hello) #输出 您可以使用Erlang的:c

为什么[head | tail]语法在用作参数时与Elixir中的单个元素数组匹配?

我注意到在iex中运行[1]=[head | tail]会导致编译错误。但是,如果定义函数,如: def simple_func([ head | tail ]) do IO.inspect(head) IO.inspect(tail) end 这一论点似乎是一致的。我假设引擎盖下发生了什么事,我很想知道它是什么。尾巴是剩余的列表。在一个参数的列表中,它只是一个空列表,因此它实际上是匹配的。要匹配的模式位于=的左侧,而不是右侧: iex(1)> [head | tail] = [

断言elixir中列表的大小

我想声明列表的大小。目前我的做法如下: assert devices = Repo.all from d in device, where d.uuid == ^attrs.uuid assert devices.first == devices.last 有更好的方法吗?将返回列表的大小: length([1,2,3]) #3 您可以使用以下方法从EXTO查询中执行此操作: query = from d in Device, where: d.uuid == ^uuid, select:

Elixir 将:类添加到链接

位于的文档提供了以下示例,用于将类添加到链接中: link("<hello>", to: "/world", class: "btn") 链接(“,至:“/world”,类别:“btn”) 但当我使用以下代码时,Phoenix会引发一个参数错误: <%= link "Register", to: user_path(@conn, :new), class: 'pure-menu-link' %> 如何添加类代码来解决问题?必须使用双引号: <%= link

如何从Elixir中的exto.Adapters.SQL.Query的结果中获取一行

我正在使用exto.Adapters.SQL 我在下面有这个问题 query = "select c.name, c.email from clients c where c.id in (1,2,3)" 之后,我得到了这个结果(地图),有3行 {:ok, %Mariaex.Result{columns: ["name", "email"], connection_id: nil, last_insert_id: nil, num_rows: 3, rows: [["Ana Silva

Phoenix/Elixir中的处理错误

1) 如何在应用程序级别处理“服务器错误”和“找不到页面”?我应该将呈现适当页面的处理程序放在哪里 也就是说,如果用户访问“my_website.com/fdafdsafds”--我如何向他呈现“error/my_custom_404_page.html”页面 或者,如果在我的应用程序中的某个地方发生了错误,例如“1/0”,我如何在应用程序级别捕获它 2) 在一个插头内,我有: def call(conn, opts) do if !some_condition do #

Elixir-仅替换特定键值的映射

我有一个地图长生不老药列表,我想在其中替换一些值 map=[ %{id:1,用户:[%{m_值:2,n_值:2}]}, %{id:2,用户:[%{m_值:4,n_值:5}]}, %{id:3,用户:[%{m_值:3,n_值:4}]} ] 在这个映射中,我想单独替换m_值和n_值的所有值 例子 我想把所有的m_值乘以2,把所有的n_值乘以3 因此,我的最终输出将是: map=[ %{id:1,用户:[%{m_值:4,n_值:6}]}, %{id:2,用户:[%{m_值:8,n_值:15}]},

Elixir @derivemodule属性的具体语法是什么?在哪里明确记录了它?

我希望它在中被记录下来,可能引用了structs,但没有乐趣。可以将其与单个或一组参数一起使用。到目前为止,我能找到的所有变化: 模块名称列表如 @derivate[MyProtocol,另一个] (例如, ) 模块名称如 元组以 @deriver{Protocol,key1::val1,key2:val2} (例如, ) 元组列表如 @derivate[{Prot1,:options},{Prot2,key::val}] (例如,) 我找到的唯一提到@derivate的地方是: 在Ke

Elixir genstage长生不老药的有效使用

我有一个方法,叫做\u start\u extractor/1,我使用Phoenix端点来启动它,但是使用GenStage。比如 defp start_snapshot_extractor(config) do name = :"snapshot_extractor_#{config.id}" case Process.whereis(name) do nil -> {:ok, pid} = GenStage.start_link(Everc

在Elixir中选择运行时的方法(函数指针类型)

我想在运行时选择程序的例程。我在Elixir中找不到任何函数指针类型(或对方法的引用) defmodule MyModule do def method do choice() end end 我想给出一个在运行时选择的方法。如何执行此操作?您可以将函数作为参数发送,然后调用该函数(使用(…)),如下所示: iex> defmodule MyModule do > def my_method(choice) do >

后端进程嵌套在代码结构中的单元测试:Elixir

我有一个函数,可以调用操作系统并获取实时数据,因此每次调用的结果都会不同。进行调用的函数嵌套在五个函数调用之后,即在进行操作系统调用之前,调用堆栈有五个级别 要测试顶级功能,需要可重复的结果。我想到了两种测试方法。。。 1.为五个函数调用中的每一个都添加一个额外的参数,并将“调出到操作系统”作为函数传入。然后到单元测试,操作系统函数调用被返回静态文本的函数替换 2.让应用程序知道测试,如果在测试环境中运行,则让操作系统函数返回静态文本。(我不知道怎么做) 我想知道;对于嵌套在代码结构中的服务器进

Elixir 如何做长生不老药混合

我正在尝试创建一个用于身份验证登录的mixin,这样它就可以应用到我的模型中,这些模型应该能够登录。很像Ruby中的has_secure_密码 Afaik这是使用use语句完成的,该语句需要模块,并使用宏调用\uuuu。所以我像这样实现了我的mixin defmodule MyApp.SecurePassword do defmacro __using__(_options) do quote do import MyApp.SecurePassword end

如何使用elixir创建事件发射器,otp方式

在elixir中,最好的方法是什么来创建一个前台进程,在每一个给定的时间段内都会滴答作响 我的主要问题是一种方法,如: defmoulde Ticker do def tick do do_something() :timer.sleep(1000) tick end end 工作,但设计是错误的。绝对不是每一秒都在滴答作响,而是每一秒加上完成某件事的时间。 我可以生成一个进程来处理“某物”,但仍然有一个小的延迟 此外,我正在尝试构建一个混合应用程序,其中涉及一

在elixir中将一个EXTO模型编码为JSON

我正在复习以下教程,试图了解长生不老药和凤凰: 我在测试中遇到了一个问题,主要是使用了毒药。编码!关于接触模型。我得到以下错误: unable to encode value: {nil, "contacts"} no function clause matching in Poison.Encoder.Any.encode/2 这使我想到以下问题: 还有解决办法: 我已将博客文章中的代码添加到lib/poison_encoder.ex中,但现在出现以下错误: unable to en

Elixir 长生不老药中的同步障碍?

什么是长生不老药(循环)屏障最优雅的实现?一个待实现的算法(顶点着色)有一个循环,该循环带有衍生进程的等待阶段(“并行同步执行”,然后使用所有进程的结果检查终止条件),它是分布式计算原理第1章中的算法5“6色” 大多数引用都是针对.NET、pthreads和其他与线程相关的计算的,所以我不确定barrier是否是我想要的正确模式。也许,还有更“灵丹妙药”的方法 我还没有任何代码(搜索模式),但下面是代码,实现了相同问题的“慢”版本: 我的想法是使用顶级进程(每个图形节点生成一个进程)来发送和接收

在Elixir中,如何使用字符串插值格式化数字

我想打印一个字符串,比如 IO.puts("Count: #{my_count}") 但我希望输出中有前导零,比如 Count: 006 我如何做到这一点?文档在哪里?我不确定Elixir中是否有一个整数可以用padding formatter方法来字符串。但是,您可以依赖于Erlangio模块,该模块可以在Elixir中通过:io原子访问 iex(1)> :io.format "~3..0B", [6] 006:ok 你可以在中找到解释。我在这里引用它是为了方便: “~3..0B”

在Elixir,Phoenix中,当模块使用Phoenix.Channel时,如何获得其他模块中的会话?

在Elixir和Phoenix中,我可以通过 Plug.Conn.get_session(conn, :id) 因此,如何在其他模块中获取会话作为一个模块使用Phoenix.Channel?Plug.Conn在中不可用。通道依赖于,您可以使用它进行身份验证 这是一个关于如何在凤凰城验证频道的教程。完美答案。同样重要的是要指出,访问通道上的会话是不安全的,因为websocket会话容易受到跨源攻击。到目前为止,链接已断开。

Elixir 如何使用Phoenix将消息发送到特定的套接字

我有一些带有验证的插座: defmodule Test.UserSocket do use Phoenix.Socket ## Channels channel "user:*", Test.RoomChannel def connect(_params, socket) do case Phoenix.Token.verify(socket, "user", _params["token"]) do {:ok, uid} ->

在phoenix框架(elixir)中更改Url以接受字符串而不是id

我正在尝试在phoenix应用程序中实现永久链接 目标是将localhost:4000/products/1更改为localhost:4000/products/productname 我试着跟着瑞安·贝茨在电视上的插曲 但在凤凰城找不到模型的to_参数函数 请帮助。不确定这是否是您所要求的,但给您: 浏览器堆栈中的router.ex get "/products/:product_name", ProductController, :get_product_by_name product_c

Elixir 如何访问项目';从一个描述中混合文件?

在将Elixir mix项目编译成escript时,我希望能够访问它的mixfile以查找版本号之类的内容。当我在IEx中运行项目时,这没有问题。但mix似乎并没有将mixfile编译成escript 当我尝试访问mixfile时,我得到: 模块MixfileTest.Mixfile不可用 我已尝试要求关闭模块,但没有效果。编译成escript后,如何访问项目的mixfile?您可以在编译时获得项目详细信息。只是个主意 defmodule MixfileTest do @project Mi

Elixir 这个表达式是如何工作的

我对长生不老药非常陌生,并尝试了以下代码: iex(19)> [1,2,true,false,true] -- [true, false] [1, 2, true] 有人能解释一下,这是怎么回事吗?您在这里减去了两个列表,结果就是设定的差值。第3项和第4项不包括在最终结果中。这就是你要问的吗 iex(19)> [1,2,true,false,true] -- [true, false] # [1,2,_,_,true] is the union [1, 2, true] 这是否

Elixir 在EXTO中修改外键

我的原始迁移已经运行并发送到上游: create table(:videos) do add :url, :string add :title, :string add :description, :text add :user_id, references(:users, on_delete: :nothing) timestamps end create index(:videos, [:user_id]) 现在我想将user\u id上的外键改为级联删除,这样当用户

Elixir Phoenix框架:未定义函数LetsPlan.Event.fetch/2。但是fetch函数在任何地方都没有文档记录

这是有问题的控制器操作(没有相应的视图,只有默认视图): def show(conn,%%{“id”=>id})do event=Repo.get_by!(事件,slug:id) render conn,“show.html”,事件 结束 菲尼克斯的失败在于: [error] #PID<0.633.0> running LetsPlan.Endpoint terminated Server: localhost:4000 (http) Request: GET /events/Ev

如何在Elixir项目中使用rebar和make立即构建erlang依赖关系

我为elixir编写了一个erlport包装器,但在将erlport编译为依赖项时遇到了问题。你可以在这里找到它: 导出mix.exs文件: defp deps do [ {:erlport, git: "https://github.com/hdima/erlport.git", compile: "rebar compile && make"}, {:ex_doc, "~> 0.11", only: :dev}, {:earmark, "&g

Elixir 如何在Phoenix中设置默认路由

在node express中,我可以简单地执行以下操作: app.get("*", function(req, res) { res.redirect("/"); }); 我如何在凤凰城做同样的事情 我有一个基本的路线,控制器,视图和模板设置根据第一个练习在“编程凤凰”书 路由器.ex scope "/", Hello do pipe_through :browser # Use the default browser stack get "/hello", H

Elixir Phoenix会话和Phoenix.Token之间的区别

我正在阅读phoenix的编程书,他们正在实现一个基于会话的登录系统,但在浏览phoenix文档时,我注意到phoenix.Token部分,该部分描述如下: 令牌提供了一种生成和验证承载令牌的方法,用于 通道或API身份验证 这和凤凰城的不同吗?如果是,有什么区别?如果没有,phoenix会话是否使用此选项 同样是快速侧查询,phoenix在配置文件中存储了一个密钥库,但在端点中也有一个签名库。。。这两者之间的区别是什么?实际上,会话主要用于保存浏览器页面请求的状态,其中令牌通过api调用中的H

在地图上操作时,键和值的顺序是否保留在Elixir中?

假设我有一张长生不老药的地图: m = %{"a"=>1, "b"=>2, "c" => 3} 如果我调用Map.values(m),我是否保证返回值总是按照该顺序[1,2,3],而不是说,[3,1,2] 这是一件我从文件中不清楚的事情。经过一些初步测试,我认为是这样。来自: 与关键字列表相比,我们已经可以看到两个区别: 映射允许任何值作为键 地图的键不遵循任何顺序 虽然Elixir网站明确指出,地图不遵循任何顺序,但它们在创建后确实遵循特定的顺序(但不保留其创建顺序)。

Elixir 凤凰城的URL/插头/牛仔?

如何在phoenix中重写Url? 例如,将所有对//www.app.com/xyz的请求重写为//app.com/xyz 有没有一个简单的选择,比如强制ssl?有没有人有主意,把它插在哪里?有插头选项吗?使用自定义插头 您可以编写一个自定义的插件来处理您的场景。下面是一个例子: defmodule MyApp.Plugs.RewriteURL do import Plug.Conn import Phoenix.Controller @redirect_from "www.app

Elixir 向Phoenix模型中的字段添加前缀

我有一个凤凰模型: schema "news" do field :title_ru, :string field :title_en, :string field :title_uk, :string end 我想要这个。例如,我有一个语言列表: languages = ['ru', 'en', 'uk'] 我想自动为字段添加前缀。类似这样的内容(NodeJS): 在Phoenix中可能吗?是的,您可

Elixir 解释范围宏的扩展

Phoenix.路由器手册页: 用给定的路径定义一个作用域 此功能是以下各项的快捷方式: scope path: path do ... end 此宏调用中的一个参数是options。我认为列表是以do开头,以end结尾的部分。有人能解释一下选项的扩展位置吗 是的,列表这里是一个包含[do:block]的单元素列表,其中block是do中的代码。。。结束。这里的文档不是很清楚,但是您可以更好地理解这一点 简而言之,path插入到options中,如果options是一个列表,那么: sco

Elixir Phoenix框架模式匹配请求头

我正在尝试实现一个用于API版本控制的自定义插件。现在,我需要能够匹配传递给请求头的值(即Accept:application/vnd.app.v1+json)。到目前为止,我已经实施了以下措施: defmodule UsersApi.Plugs.APIVersion do import Plug.Conn @versions ["application/vnd.app.v1+json", "application/vnd.app.v2+json"] def init(versi

Elixir 在伞形应用程序中运行混合异位种子文件

在伞形应用程序的顶层,有许多Exto mix任务可以工作。seeds.exs文件可以在伞的顶层运行吗?我想将mix-exto.reset别名添加到伞中。我可以运行drop、create和migrate任务。但我不知道如何运行每个应用程序的种子文件 我想了解其他人是如何解决这个问题的。自定义递归混合任务可能会起作用 defmodule Mix.Tasks.Ecto.Seed do use Mix.Task @recursive true def run(_args) do

Elixir-将数组更改为字符串

我用长生不老药制作了一张简单的地图,看起来像这样: %{email: ["Nie może być puste."], password: ["Nie może być puste."], password_confirmation: ["Nie może być puste."]} 如何将其格式更改为以下格式: iex(3)> map = %{email: ["Nie może być puste.", "Nie może być puste."], ...(3)> pa

Elixir 获取作者的所有评论。使用外部模型的二次连接

我有三个类似的模型 schema "Author" do has_many :posts, Repo.Post end schema "Post" do has_many :comments Repo.Post belongs_to :author, Repo.Author end schema "Comment" do belongs_to :post, Repo.Post end 如何为作者创建一个字段或方法来显示所有注释?本质上是一个辅助连接。我需要能够以某种方式将其

如何从Elixir中的回调访问范围外变量

我有以下(人为)代码: CacheX包说我可以添加一个fallback函数,如果在缓存中找不到密钥,就会调用该函数。但这一功能需要的不仅仅是钥匙。我知道这里肯定缺少一些东西,但如何从Elixir中的回调访问dbconn变量?您可以将匿名函数传递给Cachex。get可以访问函数外部声明的变量: # dbconn holds the database connection Cachex.get(:my_cache, "missing_key", fallback: fn _key ->

Elixir 为什么这个尾部递归没有比它的非尾部递归实现快?

免责声明:我对长生不老药很陌生,下面的内容可能很琐碎。可能只是一个我不知道的语言细节 TL;DR:以下两段代码只是实现了列表映射。这些函数在这里被调用,但它们只是遍历列表并将给定的函数应用于每个方法。在我看来,我认为版本2应该更快,因为它是尾部递归的(或者至少我认为是这样,我可能错了)。不是。它比版本1慢很多,我不明白为什么。我想得到一些帮助 问题 我来自java世界,这里只谈到尾部调用优化,但正如您可能知道的那样,它不存在于语言中。我想除了其他几个原因之外,没有人真正关心在命令式语言中实现这样

使用get_和_update Elixir修改并返回地图列表

因此,我的目标是获取地图列表,例如: [%{"ts" => 1365111111, "url" => "http://example1.com"}, %{"ts" => 1365111115, "url" => "http://example2.com"}] 使用 并返回新的地图集合: [%{"ts" => #DateTime<2013-04-04 21:31:51Z>, "url" => "http://example1.com"},%{"ts

Elixir 是否有内置的IEX命令来调用格式化?

我检查了h和h(IEx),没有发现任何问题 我确信我可以在命令提示符下运行“混合格式”,但我想知道我是否遗漏了什么。是否有类似于iex的重新编译/0或r/1的命令允许我重新格式化项目中的源文件 您可以通过调用mix.Tasks.format.run/1调用formatmix任务,使用传递给mix-format的任何参数。例如,mix格式“***.{ex,exs}”将是: iex(1)> Mix.Tasks.Format.run ["**/*.{ex,exs}"] :ok 您可以通过调用m

Elixir-库依赖项之间的死锁 上下文

我正在使用Tirexs包构建自己的代码库,用于处理ElasticSearch。这是我第一次深入研究宏、依赖项、使用、导入和Elixir提供的其他几个最高级功能 为此,我定义了一个大致如下的文档结构(/lib/data/Document.ex) 然后,Document模块使用Document.ORM模块中的其他几个功能,这些功能似乎不是导致错误的原因 问题 我的错误如下 Compilation failed because of a deadlock between files. dataobj_

Elixir 如何在Phoenix控制器中触发频道广播

我正在试图弄清楚如何从控制器触发频道广播 示例 def create(conn, %{"message" => message_params}) do with {:ok, %Message{} = message} <- Chat.create_message(message_params) do conn # TRIGGER CHANNEL BROADCAST "SHOUT" HERE |> put_status(:created) |> put_

Elixir 在返回结构时写入doctest

一个类似问题的答案已经给出 为了使用doctests测试函数,您必须能够预测函数的输出。 问题 正如在标题中提到的,我想坚持使用doctest,但这似乎不起作用,我不相信没有办法做到这一点 代码 上面是我一直在尝试的代码及其变体。例如,在数据将是意外的情况下使用。。只是那些不会改变的点点滴滴 例如,理想情况下,我希望返回值看起来像{:ok,%Elements。设置{keyname:“an_example”,{u}。这样文档就可以通过了,但用户也可以清楚地看到他们正在阅读的内容,并且可以看到之前代

Elixir 插入式路由器是否需要匹配/调度管道?

我有一个路由器模块,将请求转发给其他路由器。 在这个路由器中,我有一条由plug:match和plug:dispatch组成的管道 defmodule示例 使用插头路由器 插头:匹配 插头:调度 转发/检查,至:Example.Route.check get/,do:send_respcon,200,路由器 终止 在第二个模块中,我有相同的管道: defmodule Example.Route.Check do 使用插头路由器 插头:匹配 插头:调度 获取/执行:发送\u respcon,200

Elixir 在论坛外持久化查询参数

我正在开发一个搜索表单,它有两个分散输入:1)一个搜索框和一些下拉选择,2)几个带有预设过滤器的按钮 第一个(搜索框和下拉列表)是一个组件,它是一个表单,其中包含所有搜索和筛选选项 <%= c :filter, :search, query_params: @table.query_params %> <div class="row"> <div class="col-xs-12 col-md-3"> &

Elixir 如何在“iex”中列出我的所有别名?

有时我会忘记以前在iex会话中通过alias使用的别名 我可以通过简单地输入我想要使用的别名进行检查,例如,iex(314)>SomeName,或者多部分模块名称的默认值,但是如果看到我已经设置的任何其他“非标准”别名,那也会很好。运行\uu环境\uuuuuu别名: iex(92)> __ENV__.aliases [ {Repo, SomeProject.Repo}, {Customer, SomeProject.Customer}, {Merchant, SomeProje

Elixir 如何检索“iex”中加载的所有模块?

我想知道是否有一个标准NotImplementedError可以传递给Kernel.raise/1。我很好奇,我是否能(不仅仅是尝试一下)弄清楚那个模块是否存在 更一般地说,能够为iex会话搜索甚至列出所有“可用”模块似乎很有用 这个问题与另一个问题类似: 但这个问题是关于“Elixir标准库模块”的。我想检索或生成一个(长生不老药)列表(即我可以进一步操作的长生不老药值),列出在特定的iex会话中加载或以其他方式“可用”的所有模块。我在长生不老药论坛上找到了这篇帖子: 一条注释指向

如何在elixir中输入符号?

代码是在Aleksei Matiushkin的回答之后编辑的,以包含@type 我正在尝试typespeca sigil,特别是Regex sigil,但是当前的elixir文档没有指定如何使用 我的代码接近: defmodule M do @type pattern :: ?? @type input :: String.t() @type current :: non_neg_integer() def tokenize_pattern(pattern, input, cu

在phoenix elixir中向数据库插入或更新数据

我的数据库中有: [ %Element{id: 1, posx: 1, posy: 2, count1: 100, count2: 500, timestamps...}, %Element{id: 2, posx: 2, posy: 2, count1: 150, count2: 450, timestamps...}, %Element{id: 3, posx: 3, posy: 2, count1: 50, count2: 300, timestamps...} ] 现在当我

Elixir hex包中Phoenix辅助程序的位置

我创建了另一个phx.gen.html,它使用TailwindCSS创建模板。它很好用。我想通过创建一个十六进制软件包phx\u tailwind\u generators与大家分享。以下是我所知道的: $ phx_tailwind_generators:main> tree . ├── README.md ├── lib │   ├── phx_tailwind_generators.ex ├── mix.exs ├── priv │   └── templates │   └─

上一页 1 2 ...  59   60   61   62    63   64   65  ... 下一页 最后一页 共 125 页