Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/windows-phone-8/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函数保护子句已编译但不起作用

在做了一些练习后,我想出了一个可能不惯用的解决方案,它可以完美地编译,但性能却不符合预期 def span(xs, min, max), do: _span(xs,min,max) defp _span([], _, _), do: [] # The following guard does not match defp _span([head | tail],min,max) when min <= head <= max, do: [head | _span(tail,min,

Elixir 检索没有预加载的EXTO关系的ID

假设我有两个EXTO模型(以及它们的迁移): 如果我查询了一个项目模型,例如 project = Repo.get!(Project, proj.id) 正如预期的那样,我无法访问project.client.id,因为我没有在查询中使用preload 每当我尝试访问project.client\u id时,它都返回nil。我当然应该能够访问外键id本身? 希望下面的代码能更好地说明: client = Repo.insert!(%Client{name: "Test Client"}) pr

Elixir 如何在Phoenix频道中使用来自worker的handle_info()?

我已经创建了working worker,它在:elixir_串行处理程序中从Arduino获取消息,但现在我想在通道中使用它来广播接收到的数据,我可以将套接字注入:elixir_串行处理程序_info()吗 您是否对如何改进工作代码有任何建议,例如Gen_Server是必要的?当您收到数据时,请将其广播到频道的主题: def handle_info({:elixir_serial, serial, data}, state) do Logger.debug "received :data

Elixir 预加载所有关系

我有一个与此类似的ERM: -------- -------- -------- |ModelA|-----|ModelB|-----|ModelC| -------- -------- -------- 我通过以下方式获得ModelA及其ModelB: modela = Repo.get(ModelA,1) modela = preload(modela, :modelb) 现在我可以使用modela.ModelB访问ModelBs。但是我怎样才能预加载Mo

Elixir 如何在Phoenix中启用频道压缩?

我在凤凰城有一个频道,可以输出约4KB的数据,其中很多数据都是高度重复的,我想知道是否有办法打开该频道的压缩功能 如果我使用的是phoenix控制器,这看起来相当简单,但是我还没有发现这是否可能,或者在某个频道的某个地方有记录 非常感谢。您可以为来自特定端点的响应配置gzip压缩 config :app_name, AppName.Endpoint, http: [compress: true] 正如endpoint配置中的EndersStock设置http:[compress:true]

Elixir 如何找到子字符串的索引?

寻找与Ruby等效的长生不老药: "john.snow@domain.com".index("@") # => 9 "john.snow@domain.com".index("domain") # => 10 我不认为有任何长生不老药包装,看 在此之前,您可以直接致电: iex(1)> :binary.match "john.snow@domain.com", "@" {9, 1} iex(2)> :binary.match "john.snow@

Elixir 如何防止以字符形式返回数字?

我正在处理来自ProgrammingElixir(PragProg)的示例问题。问题是编写一个函数,将数字从返回到到。我的解决方案如下。但是,有时它们返回字符(相当于ascii)。我怎样才能避免这种情况,并且只返回数字 defmodule MyList do def span(), do: [] def span(from), do: [from] def span(from, to) when from == to, do: [from] def span(from, to)

自从版本1.3以来,有没有更好的方法用Elixir编写条件结构

Elixir 1.3引入了命令式赋值的弃用,这意味着代码块类似于: def modify(state) do if some_condition do state = modify_my_state(state) end # some other stuff may happen now here state end 将在编译时产生警告,因为状态超出范围。这是可以理解的。但建议的解决方案会产生以下结果: def modify(state) do state =

Elixir IEx.是否为混合测试配置等效物?

调试测试时,很容易放入一些IO。检查其中的语句,看看发生了什么。这非常有效,直到对象变得太大 当运行mix-test时,mix与iex的iex.configure[inspect:[limit:1000]]等价物是什么?iex.configure[inspect:[limit:1000]仅更改iex对输入的每个表达式进行的自动inspect调用的选项,并且不会改变实际IO的行为。检查功能。您必须在IO.inspect周围创建一个包装器,并使用它代替IO.inspect: test "the tr

Elixir 在Ruby中是否有与活动记录实例方法等效的EXTO?

我正在试图找出在EXTO中组合名字和姓氏字段的最佳方法 在rail的活动记录中,我可以创建一个实例方法,如: def name self.first_name + self.last_name end 然后,当我创建活动记录实例时,我可以使用User.name。如果我需要把名字和姓氏结合起来,或者对我的外胚层模型做一些其他的逻辑,我会怎么做呢?这是一个简单的示例,我可以动态地连接它,但是如果有更复杂的逻辑呢?您需要将exto.Schema(通常通过调用一些Repo方法获得)传递给该方法。从

Elixir:将内联理解的结果传递到函数时出错

我注意到Elixir的在将结果导入函数时,对于理解有一些令人惊讶的地方 例如,这些表单可以工作: foo = fn(list) -> for n <- list do n + 1 end |> Enum.reverse end foo.([1,2,3]) # [4, 3, 2] foo = fn(list) -> for(n <- list, do: (n + 1)) |> Enum.reverse end foo.([1,2

Elixir 查询的EXTO声明架构

我正在尝试运行此查询: select last_sd.* from (select distinct(sensor_id) from sensor_data) s LEFT JOIN LATERAL (select * from sensor_data sd1 where sd1.sensor_id = s.sensor_id order by sd1.received_at desc limit 1) last_sd ON true 我得到的最接近的结果是: from s in Io

Elixir接收消息:如何运行多个语句?

如何在一个Elixir receive do模式匹配中编写多个语句 这项工作: def pong sender do receive do x -> IO.puts("hello"); IO.puts("there"); send(sender, x) end end 但是如果我不能把它们放在同一条线上呢?它们可以用do end子句括起来吗?因为这不起作用: def pong sender do receive do x -> do

Elixir GenServer强制转换和启动链接

这是我的前两个小时的长生不老药,所以这可能是一个不切实际的问题,但我在生成GenServer并使用它时遇到了一些问题。我正在使用这个模块,它监视系统中某个文件的更改,每次在该文件中添加一个新条目时,我都希望将日志转换到gen服务器,该服务器将对日志进行分析,并根据结果执行任何应该执行的操作 以下是监视更改的模块: defmodule Test.Watcher do use ExFSWatch, dirs: ["/var/log/"] import Test.Receiver,

Elixir Phoenix fixture json文件

如何在phoenix项目中加载JSON fixture文件 当我尝试类似Application.app\u dir(我的应用程序“priv”)的东西时,它会给我一个编译路径,我不能在测试中使用它 是否有其他方法从“test/support/somefile.json”加载夹具文件?您可以使用\uuuuuu DIR\uuuu和路径。展开/2。例如,如果您的测试在test/controllers/page\u controller\u test.exs中,则可以使用以下方法获取test/suppor

Elixir 处理并发任务

我有多个并发任务,所有这些任务都试图检查记录是否存在,然后,如果不存在,将插入一个 不幸的是,我最终将记录重复写入数据库,因为似乎所有任务都决定记录不存在,然后所有任务都执行插入 期望的行为是,我只得到一次插入,然后,其他任务将识别出刚刚插入的记录的存在 以下是我的尝试: alias MyApp.Parent, as: Parent alias MyApp.Repo, as: Repo changeset = Parent.changeset(%Parent{}, model) case Re

Elixir GenStage强制转换未返回匹配的函数子句

我在使用GenStage的演员阵容时遇到了问题。我试图从代码的不同部分向制作者提供数据,但当我尝试执行cast调用时,会出现以下错误: ModuleName.handle\u cast/2中没有匹配的函数子句 代码如下: def new_entry(entry) do GenStage.cast(__MODULE__, {:new_entry, entry}) end def handle_cast({:new_entry, entry}, {queue, [_head | tail] =

Elixir 列表理解vs Enum.filter

我会写字 unitlist |> Enum.filter(&(s in &1)) for u <- unitlist, s in u, do: u 或者我可以写 unitlist |> Enum.filter(&(s in &1)) for u <- unitlist, s in u, do: u for u对于这种特殊情况,无论unitlist的值是什么,它们都是相同的——它们都接受任何可枚举项,并对每个项运行s in&1检查,并

Elixir 以特定格式添加列表

如果我有这样一个列表: a = [1,2,3] b = [4,5,6] 第二个列表如下: a = [1,2,3] b = [4,5,6] 我希望添加以下列表,如下所示: [1,2,3, some_atom:[4,5,6]] 所以我想要一个原子像这样出现在列表中 我正在尝试: a ++ [some_atom: b] 它给了我输出: [1, 2, 3 {:some_atom, [4, 5, 6]}] 如果可能的话,有人能建议我怎么做吗 谢谢您得到的是正确的结果。在Elixir中,

Elixir 由于genserver未启动,蒸馏厂启动后挂钩失败

我有一个Genserver,需要先运行它,然后才能给数据播种。添加启动后挂钩在distillery发布时失败,错误是我的genserver未运行 (exit) exited in: GenServer.call(MyApp.NumberHelper, {:number, #Ecto.Changeset<action: nil, changes: ..... (退出)退出:GenServer.call(MyApp.NumberHelper,{:number,#exto.Changeset

Elixir 如何从测试覆盖率分析中排除特定文件?

我的Elixir应用程序中有几个文件,我想从测试覆盖率报告中排除这些文件。我现在没有使用任何花哨的覆盖工具;(虽然我不知道使用这些工具的可能性)我现在只是在使用混合测试--cover 我如何才能告诉覆盖率分析工具,给定的文件不应包含在覆盖率分析中?目前不可能直接在Elixir中执行。我知道有两个lib可以排除特定模块 Coverex 工作服 看看你是否喜欢它们。有关此主题的更多信息,请查看以下链接

Elixir 如何通过telnet本地连接到phoneix framework应用程序?

我想使用telnet测试我的phoenix应用程序,但它显示外部主机关闭了连接。非常快,telnet退出 $ telnet 127.0.0.1 4000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Connection closed by foreign host. phoenix应用程序非常简单,没有任何额外配置。如何使用telnet连接到它?Phoenix使用Cowboy作为底层Web服务器。它

Elixir 如何在phoenix中手动访问500错误页面?

我知道Phoenix可以处理错误响应并呈现相关的错误页面。但是我想通过http://localhost:4000/500.html。有没有什么好办法来代替添加新的控制器 我这样做的原因是,我有js方法来检查内容,如果失败,则重定向到错误页面 干杯您应该为它构建控制器和路由,这样您就可以重定向到该URL。为了临时查看500错误页面,为了测试它,我会调整程序,通过自定义MyApp.ErrorView将404个错误重定向到500页面 在本模块中,只需更改(或添加): 为此: def render("4

获取IEx中所有elixir模块的列表

要获取IEx中模块上所有函数的列表,我可以运行: Map.__info__(:functions) # or Enum.__info__(:functions) 使用{Module}.\uuuu info\uuu(:functions)格式 如何获取所有标准lib模块的列表?如果要获取所有加载的Elixir模块,而不使用erlang模块,请在干净的IEx shell中运行以下命令: :code.all_loaded() |> Enum.filter(fn {mod, _} -&g

Elixir 如何使用一个字段的强制转换值作为EXTO中另一个字段的默认值

编辑:我想我要问的是怎么做: board.members[1]。用户名=所有者 我试图将对象的所有者(由用户输入)设置为其成员,这是一个将成员名称链接到其角色的映射,两者都是字符串。这应该在创建新对象时发生 编辑:我很抱歉试图让它简单化 defmodule Vision.Boards.Board do use Ecto.Schema import Ecto.Changeset schema "boards" do field :members, :map

使用Elixir中的:httpc erlang模块

我对长生不老药很陌生,没有任何erlang经验(或func-y的东西),但这一点很快就会变得明显….-> iex(2)> :inets.start() :ok iex(3)> :httpc.request(["http://www.erlang.org"]) {:error, :no_scheme} 我不知道什么是“无计划”。 我在谷歌上搜索过no_计划之类的东西,我确信这是显而易见的,但我真的什么也没找到。我能在erlang文档中找到的唯一模糊相关的东西是-> iex(4)>

Elixir 更新时与变更集相关的模型错误

Ecto在更新has_one关联时给了我一个错误: 有关模型: defmodule Something.Parent do has_one :thing, Something.thing @required_fields ~w(field1 field2 thing) end 控制器更新操作 def update(conn, %{"id" => id, "parent" => parent_params}) do

Elixir 如何用长生不老药中的指数做降低?

我当前的解决方案是使用_index运行,然后在阵列上运行reduce 5..10 |> Stream.with_index |> Enum.reduce(0, fn(num_idx, acc) -> {num, idx} = num_idx acc + num * idx end) 是否有一种方法将元素的索引附加到元素,然后在数组上运行reduce?您必须记住,Enum.reduce函数必须有两个参数。因此,您需要做出相应的更改 你做的很好。根据

Elixir/Phoenix EEx共享模板中的可选值

我试图在Phoenix EEx共享模板(我重用的模板)中传递值。到目前为止,还不错,但现在我想让其中一些是强制性的,而另一些是可选的。例如: <a href="<=% @url %>" class="core Item <%= className %>"> url应该是强制性的-这是默认设置(OK) className应该是可选的-我不能这样做,因为如果在调用模板时不包含它 () 有个错误。 我该怎么做 使用@class\u name(按照惯例,变量应

Elixir 为什么禁止在警卫内部使用远程功能

为什么我不能在guard中使用字符串或其他模块 代码: 当我希望使用模块功能时,如何优雅地重新格式化这种情况?来自: 有效的保护表达式集(有时称为保护测试)是有效Erlang表达式集的子集。限制有效表达式集的原因是必须保证对保护表达式的求值没有副作用 长生不老药也是如此 好消息是,对于您的特定用例,有一个保护可以工作: def foo(s1, s2) when byte_size(s1) == byte_size(s2) do 通常,当您想做的事情无法在防护中使用时,您需要检查函数内部,例如

Elixir 为什么String.replace与字符类会将德语UMLAUT转换为二进制文件?

(如果我关于二进制文件的术语不适用,我深表歉意-我仍在开始使用长生不老药) 在解决其中一个问题时,我注意到String.replace以及Regex.replace显然在使用[:alnum::字符类时将德语Umlauts转换为二进制: iex(1)> String.replace("ö", ~r/[[:alnum:]]/, "_") <<95, 182>> iex(2)> String.replace("ö", ~r/[^[:alnum:]]/, "_") &

Elixir 凤凰城-Can';t从iex向频道广播

我试着通过:IEX-S mix和IEX-S mix phoenix.server打开IEX 这是我的用户接口: defmodule Final.UserSocket do use Phoenix.Socket channel "keywords*", Final.KeywordsChannel transport :websocket, Phoenix.Transports.WebSocket def connect(_params, socket) do

Elixir线程安全访问json文件?

我有多个任务试图同时读取并更新.json文件。在数据库场景中,我只需将锁放在一行上。。。可以用文件做类似的事情吗 我知道这可以通过genserver handle_调用来解决,我有更简单的选择吗?没有任何机制可以锁定文件的特定行,我知道也没有elixir json库可以锁定json结构中的特定元素。您必须构建自己的数据elixir表示,并执行诸如“签出”和“签入”结构中的元素之类的操作,或者在流程中包装结构的每个子部分 在编写elixir/erlang/otp时,您也应该忘记thread这个词。

Elixir函数在iex和命令行中的行为不同

我有一个非常简单的Elixir项目,其中包含一个函数primes\u table。这是它的第一部分 def primes_table(n) do header_row(n) <> rows(n) end def header_row(n) do "|" <> pad("", n) <> header_row_columns(n) <> "\n" end 从命令行调用时: $ ./primestable 3 |

Elixir 无法对错误消息进行编码

我使用phoenix作为JSON API。我的一个模型如下所示,除非唯一约束检查失败,否则该模型运行良好。发生这种情况时,我会出现以下错误: (Poison.EncodeError) unable to encode value: {"Email address is already registered", []} 型号: defmodule MyApp.Registration do use MyApp.Web, :model @derive {Poison.Encoder, o

如何将非平凡值保存到Elixir中的属性?

因此,我理解在Elixir中定义模块属性时,语法是@myvariable 30,但是,在我的情况下,假设我的模块定义如下: defmodule MyModule do def add(x,y), do: x + y @myvariable add(3,4) def print, do: @myvariable end 理想情况下,这应该打印出7,但是我得到一个编译器错误:未定义的函数add/2 在我的具体例子中,我想存储为属性的值是一个有点大的映射,因此不像add(3,4)那

Elixir 有没有办法通过phoenix频道通过WebSocket发送文件?

我现在正在开发聊天功能,想知道是否有一种通过WebSocket发送文件的简单方法 到目前为止,我一直很不成功,我让它在http上工作得很好,但它似乎从来没有收到我的文件,当它到达我的websocket的另一端时 另外,使用WebSocket来回发送文件是一个好主意,还是当有人想要上传文件时,我应该坚持使用http?这是一个相当麻烦的问题,因为您必须将文件拆分成块并编码,分别发送块,然后在另一端重新组装它们。如果您能够使用HTTP(例如从客户端到服务器),只需向服务器发送一条消息,表明您对上载文件

Elixir 如何阅读新凤凰频道实例';信道测试用例中的状态?

我有以下phoenix频道,它处理传入消息,广播消息,然后更新频道实例的socket状态: defmodule MyApp.MyChannel do use MyApp.Web, :channel def join("topic", _payload, socket) do {:ok, socket} end def handle_in("update", %{"new_number" => number_}, socket) do broadcast

Elixir Phoenix开始抛出(UndefinedFunctionError)函数:crypto.rand_bytes/1未定义或私有

在升级到我的system-MAC之后,我的phoenix应用程序编译得很好,但在我遇到任何路径时都会抛出这个错误 服务器:localhost:4000(http)请求:GET/ **(退出)引发了一个异常: **(UndefinedFunctionError)函数:crypto.rand_bytes/1未定义或私有。你的意思是: * rand_seed/0 * rand_seed/1 (crypto) :crypto.rand_bytes(20) (plug) lib/

Elixir 外星误差的长生不老药模式匹配

当一个insert未能满足数据库级别的约束时,我依靠EXTO返回一个错误 是否可以根据Ecto返回的错误类型运行不同的代码 case Repo.insert(changeset) do {:ok, _} -> IO.puts("inserted") {:error, message} when is_certain_ecto_error -> IO.puts("database constraint er

如何在Elixir Plug测试中设置POST请求的主体?

使用Plug.Test.conn,设置请求正文似乎不起作用 这是插头: defmodule MyPlug do import Plug.Conn def init(_), do: nil def call(conn, _) do {:ok, body, _conn} = read_body(conn) send_resp(conn, 200, "body: #{body}") end end 使用curl: $ curl -X POST -d foo=bar

Elixir 正在使用多个内容初始化GenServer状态

我想创建一个在开始时需要多个状态的GenServer。特别是init函数启动计时器,计时器需要知道一些初始状态。我知道GenServer.start\u link的第二个参数直接传递到init(arg) 但是,我找不到一个示例来说明如何在中传递多个state参数,以便在init中进行初始化。例如,可取的是: defmodule Application.Test do require GenServer def start_link(state1, state2) do Gen

Elixir 在传递函数时get_in()是如何工作的?

在“Programming Elixir 1.6”中,有以下示例: authors = [ %{name: "José", language: "Elixir"}, %{name: "Matz", language: "Ruby"}, %{name: "Larry", language: "Perl"} ] languages_with_an_r = fn (:get, collection, next_fn) -> for row <- collection do

Elixir 捕获[错误]GenServer#PID<;0.1278.0>;终止

是否有可能捕获导致此异常的handle\u events中可能出现的错误 [error] GenServer #PID<0.1278.0> terminating 闻起来像是XY问题。是否要阻止它终止?到底是什么导致了这个错误?的permission子句是否可以处理事件接受一切帮助?您如何准确地处理事件?请至少显示您的处理程序\u事件的内容。想象一个事件流到达处理程序\u事件,其中一个事件不知何故损坏,它终止了genserver,从而避免处理其余事件。损坏意味着什么?似乎您的处理程

Elixir 以混合格式括起来

Elixir 1.7.3(使用Erlang/OTP 19编译) 我对以下代码运行mix format lib/hello\u web/router.ex: pipeline :browser do plug :accepts, ["html"] plug :fetch_session plug :fetch_flash plug :protect_from_forgery plug :put_secure_browser_headers end 结果如下: pipeline

Elixir 在不离开IEx的情况下重新编译和重新加载IEx

如何重新编译和重新加载IEx(杀死所有进程)。当我退出控制台并再次启动它时,我将达到相同的行为,但不离开IEx 我在功能上做得很好 IEx.Helpers.recompile() Process.exit self, :kill 但我收到了一条红色消息:(退出#PID)shell进程退出,原因是:已杀死 这很烦人。看起来IEx.Helpers模块中没有重新启动所有进程的功能。但是,您可以使用应用程序模块功能来停止/启动混合应用程序 建议的解决办法是: Application.sto

Elixir 长生不老药功能括号

嗨,我正在学习elixir atm(刚刚开始),我从来没有做过函数编程,所以我的问题是函数名后面的括号做什么。 我正在看一些网络课程,想尝试制作一些用于培训的应用程序,但我真的不明白 defmodule Cards do def create_deck do values = ["Ace","Two","Three", "Four", "Five"] suits = ["Spades", "Clubs", "Hearts", "Diamonds"] for s

迭代映射并更新elixir中的值?

我有一个映射/结构数据: %{foo: "102", zoo: "103", bar: "104"} 我想迭代映射并将值更新为整数,我应该怎么做 result = %{foo: 102, zoo: 103, bar: 104} 干杯说您的地图被定义为“我的地图”: Enum.into(Enum.map(my_map, fn ({key, value}) -> {key, String.to_integer(value)} end), %{}) 这将迭代映射,将其值重新映射为整数,然后

Elixir 使用Phoenix通道计时时钟

我正在尝试创建一个Phoenix频道,它只包含一个用户可以订阅的时钟 defmodule MyWeb.TimeChannel do use Phoenix.Channel def join("room:time", _message, socket) do schedule_heartbeat() {:ok, socket} end def handle_info(_, socket) do broadcast!(socket, "update", %{

Elixir 如何显示凤凰仙丹中的两个深度参考

我想在Pheonix Elixirr中展示两张桌子的参考资料,而且似乎离实际获得它还有一步之遥 有三个相互关联的表格: 主表是Clients。客户有请求。请求具有RequestType,这是一个查找表 在客户机模板中,您希望显示客户机发出的请求列表。在Show模板中,有一个循环,如下所示: <ul> <%= for request <- @client.requests do %> <%= request.request_date

上一页 1 2 ...  37   38   39   40    41   42   43  ... 下一页 最后一页 共 125 页