在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
根据:
|>符号是管道操作符:它只是从左侧的表达式获取输出,并将其作为输入传递给右侧的函数调用
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
我的路由器里有这个。例如:
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
我尝试了以下方法
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
错误消息:
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
鉴于以下代码工作正常:
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
我正在使用Phoenix框架,并尝试配置一个进程,该进程将连接到另一个服务器,该服务器将为我提供一些提要。我正在使用Erlang的gen_tcp来实现这一点。我想稍后将这些提要发送给与频道连接的客户机(其实没那么重要)
我希望它受到监控,因此如果没有与远程资源的连接,应用程序不会中断,而是等待连接恢复。如果有任何错误,我希望它重新启动的主管
这就是我所尝试的:
defmodule HelloPhoenix.TestServer do
use GenServer
def start_li
因此我可以在elixir中访问erlang函数,通过:erlang访问它们,但未定义
我认为这个计时器不是标准的erlang模块,需要被要求/导入,但我不知道怎么做
另外,如果timex没有像erlang函数这样的高精度计算时间戳差异的函数,请不要建议它。我没有发现阅读文档 使用
iex(1)> a = :erlang.timestamp
{1458, 585479, 931609}
iex(2)> b = :erlang.timestamp
{1458, 585484, 19771
是否可以在分块状态下保持连接打开几秒钟
在请求中,我创建了几个进程,这些进程需要5秒钟才能完成,之后我想通过区块向客户端发送响应,但连接已关闭
我正在和邮递员一起测试,我有以下标题:
“连接”:“保持活动”,“保持活动”:“超时=10000”
这是我的最小化应用程序,输出总是“InitEnd”
期望的结果是:“init123456779end”或类似的内容:
defmodule AlivePlug do
import Plug.Conn
def init(opts) do
op
标签: Elixir
phoenix-frameworkecto
我想手动和有条件地处理创建模型之间的关联。我有一个带有标记功能的应用程序,因此有三个模型:标记、可标记资产和连接模型AssetTag。我希望资产能够处理使用预先存在的标记以及用户在创建/更新资产时可以在资产的“标记”属性中指定的新标记进行标记的情况。我猜传入的JSON将如下所示:
{
"item_number": "ITEM_NUMBER",
"name": "Sample Asset",
"description": "A sample asset.",
"type": "pr
我将Phoenix框架用于带有WebSocket连接的Elixir应用程序。我有两个不同的主题,一个面向用户,另一个面向管理员。管理员应该看到哪些用户在场。我决定使用凤凰城的Presence模块。不幸的是,您只能将当前状态发送到开始跟踪的套接字
示例代码:
def join("users", params, socket) do
socket |> assign(:user_id, params[:user_id])
send(self, :after_join)
{:ok,
这会导致异常,这是一个模糊版本:
<% if @aaa == 1 %>
<b>Hi</b>
<% else %>
<b>Hi2</b>
<b<%= @var %>
<% end %>
<b><%= @var3 %><%= @var4%>
<% if @var5 == @va
标签: Elixir
phoenix-frameworkectoex-unit
我正在开发phoenix应用程序。此应用程序是伞形应用程序的一部分。在这个保护伞中,我有一些负责应用程序不同领域的小应用程序,它们是:
凤凰网api(“api”)
核心业务逻辑(“核心”)
用户身份验证(“auth”)
数据库模式(“db”)
“api”依赖于“core”和“auth”,而这两个应用程序依赖于“db”
只有“db”应用程序有一个ecto repo,其他所有应用程序都没有。回购由“db”应用程序启动,并受监督
现在我想在“api”应用程序中测试我的控制器。这就是我遇到的一个问题
例如,未在此模块中的任何位置定义。您还可以看到它是usesPhoenix.Channel,但它也没有在任何地方定义assign。事实证明,assign是在中定义的,我知道的唯一原因是,Phoenix.Socket中定义了一个名为的宏,它使用的是Phoenix.LiveReload.Channel。显然,不知何故,这赋予了Phoenix.LiveReload.Channelassign功能
除了grep之外,您应该如何跟踪该逻辑。比如,如果我只是看一下凤凰城.LiveReload.Channel,
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
我试图跟踪编译时使用另一个模块的所有模块,并在运行时获取所有这些模块的列表:
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
我想从列表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
我得到了以下变量
variant_option= {"option", [{"value", "www.abc.com"}, {"data-value", "5"}], ["Select"]}
我想做的是获取第三个元素-->(“选择”)
但是我得到了这个错误
protocol Enumerable not implemented for {\"option\",...........}
您只有一个元组,而不是元组列表。您的代码将与以下列表一起使用:
variant_option = [{"o
标签: Elixir
phoenix-frameworkecto
我正在尝试创建一个EXTO查询,当两个where查询都满足时,该查询将返回一个结果。当我运行应用程序时,我得到错误函数nil.title/0未定义或私有。这是因为我没有正确的查询吗?我想要一个和两个在哪里
def next_prod do
Post |> where(postStatus: "published") |> where(next_prod: "yes") |> Repo.one()
end
SQL查询
您将看到有一条记录应该与EXTO查询匹配
iex(1)&
定义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
我试图请求一个数字列表(例如:“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版本:使用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
我在中找不到关于发送预告片的任何信息。有可能吗?有了对HTTP/2的支持,这对于像GRPC这样的应用程序很重要,现在还不是。好消息是Plug v1.5支持Cowboy 2+,它确实支持HTTP 1.1和HTTP 2的尾部头。因此,我们非常感谢您的请求
我有一个代表位的整数列表;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
operatorsanonymous-function
所以我在读这本书,在某个时候它说:
还有第二种形式的函数捕获操作符。你可以给
它是现有函数的名称和arity(参数数量),
它将返回一个调用它的匿名函数
但我不明白为什么会有人想这么做。如果您知道可以将命名函数和未命名函数绑定到变量(如果您愿意),那么您可以从中获得什么好处呢 有一些简单的函数是很常见的,比如
Enum.map(list, fn(element) -> element.id end)
或者只是
Enum.map(list, &(&1.id))
经过一些练
标签: Elixir
phoenix-frameworkecto
我正在努力使这项工作与博士后和体外受精。下面的查询在没有group_by的情况下运行良好,但我需要在fragment字段上进行分组,它似乎看不到。知道有什么问题吗
def query_clicks do
from(Click)
|> select(
[c],
[
fragment("date_trunc('hour',?) as hour", c.inserted_at), c.link_id]
)
|>
我有一张地图看起来像:
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} ->
我有一个模式如下的模型:
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
在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
如何转换这样的字符串日期
“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> &
我的Phoenix应用程序需要与第三方API集成,该API通过以流格式发送数据。我第一次了解SSE;SSE流看起来很像WebSocket,只是它们是单向的,而且更简单
我看到了很多关于如何从Elixir应用程序作为服务器发送SSE数据的建议(例如),但我没有看到关于Elixir应用程序如何作为客户端使用SSE数据流的建议。我看到的文章似乎假设浏览器中的客户端是JS,但我知道Ruby SSE客户端存在(,),因此我认为Elixir应用程序不能充当SSE客户端没有很强的技术原因
在Elixir应用程
当使用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
在Phoenix/Elixir应用程序中,在这个小小的卫生功能中,当用户没有输入电子邮件时,我遇到了一个问题
我正在使用结构来处理数据。还有一个简单的函数,它(目前)只需去除空白并更新结构(map)。到目前为止,它工作得很好,但是当字段email为nil时,我得到一个错误
**(FunctionClauseError)String.Unicode.strip/1中没有匹配的函数子句
因此,我引入了一个guard子句来检查这种情况,然后只对用户名进行清理
defmodule MyApp.User
我正在学习下面的教程
我和代理一起工作,我不明白这条线是怎么运作的
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中是否有类似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: "
我目前正在用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
考虑以下代码:
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
我正在寻找一种方法来构建类似于symfony中的bundle或CakePHP中的插件的东西。例如:在用户模块中,所有控制器、模板和视图都将位于一个文件夹中,以便我可以轻松访问它们
我想基于功能创建类似的模块,例如,支付模块、库存模块等
在当前的体系结构中,我可以将所有控制器、所有视图放在一起。因为我的项目非常大,所以现在它有将近140个控制器等等,在我看来非常混乱。phoenix为模块化代码提供了什么?在开始时,请检查这一点,但我也强烈建议您检查由phoenix的创建者、Elixir和guys的
给出了一个简单的GenServer过程
defmodule KVServer do
use GenServer
def start do
GenServer.start(__MODULE__, %{}, name: :kv_server)
end
def store(k, v) do
GenServer.cast(:kv_server, {:store, k, v})
end
def handle_cast({:store, k, v}, state
我使用的库执行异步请求(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
在本例中,
我想用人性化的方式修剪一根绳子
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
我在Phoenix应用程序中有以下模块。此代码基本上是共享规范示例。看起来是这样的:
defmodule TattooBackend.CurrentPasswordRequiredTest do
@moduledoc """
This module defines tests that are testing api current password requirement.
"""
import Phoenix.ConnTest
alias TattooBackend.W
我目前有一个Phoenix应用程序,它同时具有JSON和HTML端点
我想返回最适合给定请求的错误,但它始终默认为呈现(“XXX.html,41;函数,即使请求的格式是application/json
有没有一种方法可以为application/JSON类型的请求返回JSON,并为其他所有类型的请求返回HTML?您可能需要检查config.exs文件中的render\u errors选项(请参阅),并添加JSON格式以及HTML
config :my_app, MyApp.Endpoint,
我正在努力在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
我通过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
phoenix-frameworkecto
我想从EXTO获得一个数据结构,它允许在我的HTML中编写类似这样的iteraly:
<%= genders.name %>
现在我的控制器运行良好
defmodule HexProjectWeb.LandingController do
use HexProjectWeb, :controller
alias HexProject.Gender
def index(conn, _params) do
genders = HexProject.Repo.al
我使用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
ectophoenix-framework
我最近查看了的文档,注意到它有一个用于维护\u数据库的选项。它说它是在删除或创建数据库时使用的数据库。但是为什么它需要这样做呢?因为在删除或创建数据库时,您大部分时间都在使用一个混合任务,而此时它将是一个控制器,因此无论如何,它不会使用持久连接来连接到数据库
我只是被这个选项弄糊涂了,因为它看起来很奇怪,我想知道是否有人能解释一下如何以实际的方式使用它,以及它为什么会存在
如果这是询问此类讨论问题的错误媒介,请告诉我,我会将其移至其他位置 mix首先不包括在发行版中。想象一下,当您维护一个任务关
标签: Elixir
phoenix-frameworkecto
假设我有三个模型:
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
在某种程度上,对于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 页