在C#中,我可以声明如下枚举:
enum QuestionType { Range, Text };
def VerifyAnswer(QuestionType.range, answer) do
assert answer >= 0 && answer <= 5
end
我用长生不老药怎么做?我想做的是能够匹配这样的模式:
enum QuestionType { Range, Text };
def VerifyAnswer(QuestionType.ra
是否可以使用¬ation编写参数化函数?
下面是Dave Thomas的编程长生不老药书中的参数化函数示例
title是否可以使用¬ation编写?下面给出了&符号的示例
iex> square = &(&1 * &1)
#Function<6.17052888 in :erl_eval.expr/5>
iex> square.(8)
64
iex>square=&1*&1)
#作用
iex>正方形。(8)
64
这是不可能的。试图
我试图在Elixir中实现协议,作为学习Elixir和进一步理解函数式编程的练习
Modbus数据建模为连续的寄存器块。modbus读取请求的形式为。这指示服务器从开始收集寄存器,然后继续收集寄存器。例如,如果为0且为5,服务器将返回寄存器0、1、2、3和4的值
我认为对这些寄存器建模的一个好的数据结构是一个映射,其中键是寄存器,值是寄存器的值。因此,我很好奇是否有一种惯用的方法,可以从给定多个键的映射中检索多个值,而不必遍历键并为每个键调用get()
如果地图真的不合适,我愿意接受其他关于更好
标签: Elixir
phoenix-frameworkecto
我有一个帖子模式,有很多评论。我想在一个页面上列出所有带有注释的帖子(我将单独使用分页),使用单个db查询,但有以下限制:
第一:我想将预加载限制为每篇文章3条最新评论(不是全部,因为可能有数百条)
第二:我只想从评论中预装标题栏,避免“文本”栏,因为文本可能包含太多内容
我的最终结果是:
Post 1 ──┬── Comment 1 Title
│── Comment 2 Title
└── Comment 3 Title
Post 2 ──┬── Com
我想创建一个插件系统:动态加载/卸载一组模块,添加/插入/删除它们
大概是这样的:
# plugin1.eex
defmodule MyApp.Plugins.Plugin1 do
def plugin_main_func(arg1, arg2) do
# some stuff
end
end
# plugin2.eex
defmodule MyApp.Plugins.Plugin2 do
def plugin_main_func(arg1, arg2) do
我当前有一个表,其中有一个字段,该字段与另一个表具有“属于”关系。当我尝试使用Repo.insert向该字段添加值时,我收到一个“is_invalid”错误。该错误由种子文件和手动命令行生成
要插入的结构是:
Repo.insert! %Customer_list{
age: 24,
first_name: "Tony",
last_name: "Stark",
customer_id: "D00001",
list_date: ~D[2018-09-13
标签: Elixir
github-enterpriseueberauth
我尝试了使用Ueberauth连接到Github的基本配置,但我认为我能够找到一个配置来将OAuth端点调整到我的Github企业实例,文档中没有提到如何做到这一点。我可以看到硬编码到模块中的端点配置,但我不确定在不重新编写整个策略的情况下连接到企业实例需要做什么
我如何配置Ueberauth以使用我的GitHub Enterprise实例而不是Guthub.com?我认为您应该基于(或者可能)为Ủberauth创建自己的策略,这应该与克隆repo和更改某些设置一样简单。我很荣幸地避免为了更改
标签: Elixir
phoenix-frameworkecto
我有一个带有电子邮件字段的用户模型。现在我想让它独一无二,因此,根据文档,我需要申请:
cast(user, params, ~w(email), ~w())
|> unique_constraint(:email)
此外,我应该在迁移中定义唯一索引:
create unique_index(:users, [:email])
问题是,当我尝试在迁移中定义此项,同时添加更多字段时,它不起作用,现在我尝试使用此create unique_index(:users,[:email])定义迁
在控制器内部,我正在检查连接的会话,以验证会话是否连接到用户。如果没有,我将它重定向到另一个页面
但是如果我尝试在重定向后调用它,halt会返回一个错误:
Plug.Conn.halt/1中没有匹配的函数子句
如果没有halt,原始控制器的页面将在控制台中进行渲染并打印错误(模板在没有用户的情况下渲染):
(退出)引发异常:(UndefinedFunctionError)未定义函数:nil.username/0
所以我的问题是:重定向后是否可以调用halt
如果是,我的代码的哪一部分是错误的
我有以下资料:
counter = 0
try do
for _ <- Stream.cycle([:ok]) do
IO.puts "Counter is #{counter}"
counter = counter + 1
IO.puts "After counter: #{counter}"
if counter == 3 do
throw :halt
end
end
catch
:halt -> IO.puts
我有以下型号
schema“产品”是什么
字段:数量,:整数
字段:价格,:浮动
字段:折扣,:浮动,默认值:0.0
属于:秩序,秩序
结束
模式“命令”是什么
字段:收到日期,外接日期
字段:装运成本,:浮动
字段:储蓄,:浮动
字段:店铺名称,:字符串
有很多:产品,产品
结束
我现在要做的是获取带有特定字段的订单:savings和shipping\u cost
我还需要该订单的关联产品,但同样,也只需要特定字段:数量、价格和折扣
如何以最有效的方式做到这一点
def for_amount
我可以构建一个空的哈希集,我可以从中构建更大的哈希集,如下所示:
HashSet.new |> Set.put(1) |> Set.put(2) |> Set.put(1)
但是如何使用列表初始化哈希集?使用Enum.into:
[1, 2, 1] |> Enum.into(HashSet.new) #=> #HashSet<[1, 2]>
[1,2,1]|>Enum.into(HashSet.new)#=>HashSet
我有一个Phoenix应用程序。它所做的只是身份验证,它有一个照片库,用户可以上传照片并将其标记为公共/私人。我想把它转换成一个微型应用程序,这样我就可以在我的另一个项目中重用它
我发现了,但它没有给出更多关于如何在dev和prod中实际设置的细节
有人能详细说明一下吗?步骤和代码示例会有所帮助。我还没有尝试过这个,但我在Elixir slack.io#Phoenix频道上询问过,并得到了Chris McCord(Phoenix Framework的作者)的回复:
然后库遵守plug契约并完成它
如何仅在生产环境中插入控制器中的模块
例如:
plug BasicAuth, realm: "Admin Area", username: "admin", password: "pass"
您可以利用Mix的环境。您可以仅在生产环境中通过以下方式选择性地添加plug调用:
if Mix.env == :prod do
plug BasicAuth, realm: "Admin Area", username: "admin", password: "pass"
end
如果Mix.en
我正在设置一个每小时运行一次的GenServer来缓存数据。我遵循了JoséValim发布的示例,它是对一个关于如何做到这一点的问题的回答
它工作得很好,只是如果我调用Process.send\u after/3的间隔是一个模块属性,它不会运行。有人知道为什么会这样吗
因此,以下操作不起作用,但如果在调用过程中.send_after/3我将@interval替换为60*60*1000,它将按预期运行(这基本上是上面另一个So帖子的代码):
你有没有公布你使用的确切代码?我刚试过这个:
iex(
我对控制器的测试失败,无法找出此错误的根源。我尝试了我能想到的一切,但有点无能为力,因为错误消息是相当普遍的
有问题的错误消息(运行测试时)
我的代码:
admin\u controller\u test.exs
defmodule MyApp.AdminControllerTest do
use MyApp.ConnCase
alias MyApp.Admin
@valid_attrs %{email: "foo@bar.com", password: "s3cr3t"}
@
我正在构建一个elixir phoenix应用程序,使用自定义数据库适配器连接到OrientDB。因此,我生成了带有--no-exto选项的基本应用程序,因为我没有使用exto
我正在构建自定义模型和自定义验证,但当然想做单元测试
如果我尝试在单元测试中包含ModelCase,如下所示:
defmodule App.UserTest do
use App.ModelCase
end
我得到了错误
module App.ModelCase is not loaded and could n
我正在玩elixir中的use功能。我不明白一件事:
defmodule Alex do
use Included,
names: [:helen, :rebekka],
states: [
%{
:name => :start
}, [
name: :finish
]
end
我放置了不同的构造器(map和keyword)来显示差异。我有一个简单的elixir模块,它返回一个值:
defmodule
正在研究长生不老药中的词数问题。目标是返回一个映射,其中包含句子中每个单词的字数。i、 e.如果字符串“一条鱼两条鱼红鱼蓝鱼”是输入,则输出应为%{“一”=>1,“鱼”=>4,“二”=>1,“红”=>1,“蓝”=>1}
就我所知:
iex(14)> sentence = "one fish two fish red fish blue fish"
"one fish two fish red fish blue fish"
iex(15)> String.split(sentence
标签: Elixir
phoenix-frameworkecto
我有一个Review模型,该模式有属于用户符号
每个审核都应该属于用户,因此user\u id列是必需的
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> a lot of things like validate_length
|> assoc_constraint(:use
我有一个非常大的csv文件,里面有日期和整数。我需要为每个文件记录创建一个EXTO记录。问题是,需要根据相邻记录日期之间的最小时间差对整数进行操作。我一直在尝试将流处理到一个点,绑定到一个变量,然后将其用于两个不同的计算。但是第二次计算得到的是一个空流。似乎任何对流的访问都会删除我得到的任何内容。有什么方法可以重用/fork/clone/dup/stream吗?我知道RX streams有这个概念。我试着用一条链子来做这件事,但结果是空的。以下是我尝试的基本流程:
def do_somethin
前言:
在过去的几个月里,我一直在构建一个简单的stackoverflow克隆,以自学长生不老药、异位和凤凰框架。我已经有一段时间没有这么有趣的东西了
问题:
我正试图根据获得的投票数对问题进行排序
questions_sort_by_upvotes =
from q in Question,
left_join: up in assoc(q, :upvotes),
where: q.inserted_at == ^ Timex.today
order_by: [
我有一个基本应用程序布局:
#layouts/base.html.eex
<body>
<div id="base_layout.html">
<!-- some content -->
<%= render(@view_module, @view_template, assigns) %>
<!-- some content -->
</div>
</body>
但这只是将基本布局包装
是否有一个命令行调用可以与mix结合使用,它将在不运行测试的情况下输出所有测试名称?mix-test--trace
在混合测试帮助页面中找到
编辑:没有看到“不运行测试”的提示,但我认为这可能会有帮助我认为没有,这样的命令,但您可以使用grep-h“test”列出所有测试名称/test/***.exs | sed-e's/do$//g'这并不是对您的问题的真正回答,但为了您将来的参考,您可以通过键入添加到Oleksandr中的混合测试找到混合测试的命令行开关,您可以运行并实现run/1功能。如
我想用两个模型(事件和活动)呈现json,这两个模型跨外键关联
在controller中,我执行以下查询:
def all_nested(conn, %{"event_id" => id}) do
event = Repo.get! nested_all_query, id
render(conn, "show_all.json", event: event)
end
defp nested_all_query do
from event in Event,
left
我正在尝试使用guardian auth测试用户id是否等于资源id。如果没有当前令牌,并且我尝试转到正在检查令牌的url,则会出现此错误function nil.id/0未定义或私有。我来自ruby背景,不知道为什么它会说.id是函数?为什么这是一个错误。这是我的密码:
def index(conn, %{"user_id" => user_id}) do
user = Repo.get(User, user_id)
|> Repo.preload(:
简而言之,Elixir和一些(大多数?所有?)函数式语言中没有return语句的原因是什么
为了让它更长一点,我面临的情况是,在Java、Groovy、C、Ruby中。。。我会写这样的东西
def func (some, parameters) {
# say some error
if(condition 1) {
return -1
}
# execute some function and return from here the result
if(con
在我的Phoenix应用程序中,我在controller中有以下操作:
def edit(conn, %{"id" => topic_id}) do
topic = Repo.get(Topic, topic_id)
changeset = Topic.changeset(topic)
render conn, :edit, changeset: changeset, topic: topic
end
def update(conn, %{"id"
如何从列表中获取最接近的数字
测试:
您可以将Enum.min_by与计算列表和78中数字绝对差值的函数一起使用:
iex(1)> Enum.min_by([1, 100, 250, 800, 1300], &abs(&1 - 78))
100
您可以将Enum.min_by与计算列表和78中数字绝对差值的函数一起使用:
iex(1)> Enum.min_by([1, 100, 250, 800, 1300], &abs(&1 - 78))
100
例如,在Erlang中:
1> (fun(A,A) -> same_values_only end)(7,7)
same_values_only
我天真地尝试了长生不老药中的插入符号,但没有成功:
iex(3)> (fn(a,^a) -> :same_values_only end).(7,7)
** (CompileError) iex:3: unbound variable ^a
显而易见的解决方案当然有效
iex(2)> (fn(a,
以下Elixir代码不正确,但传达了(我认为)期望的结果:
defmodule Question do
def dbl(n), do: n * 2
def trp(n), do: n * 3
def consumer(xs, f) do
Enum.filter(xs, f.(x) > 5)
end
end
Question.consumer([1, 2, 3], dbl) # [3]
Question.consumer([1, 2, 3], trp) # [2,
受这个伟大答案()的启发,我认为可能有一种类似于此查询的方法来动态操作这些字段:
u.date,u.title,u.text-u.date\u pt,u.title\u pt,u.text\u pt-u.date\es,u.title\es,u.text\es-。。。
在此查询中:
def search(query, search_term, locale) do
language =
case locale do
"pt" -
标签: Elixir
phoenix-frameworkectoexadmin
我正在尝试将更多数据添加到CRUD到我的管理界面。我的模式如下所示:
schema "tree" do
field :name, :string
field :metadata, :map
field :created_at, Ecto.DateTime
field :updated_at, Ecto.DateTime
end
form framework_tree do
inputs do
input tree, :name
end
inputs "Met
在测试用例中,我们使用断言来处理错误。将它们的返回值与我们定义的匹配,测试就会通过。比如,如果我们有一个参数错误,我们使用:
assert_raise ArgumentError, "argument error", fn ->
这将起作用,测试将通过。如果我们有参数错误。运行时错误的情况也一样
但是如果我们有这样的长错误消息:
exception Postgrex.Error (ERROR 42703 (undefined_column): column
j0.rating d
标签: Elixir
releasedistilleryedeliver
我有一个长生不老药应用与3伞项目。我正试图通过distellary和edeliver自动化它们的发布
我可以通过运行以下命令创建发布:
混合发布--verbose--env=“production”--name=“se_示例”
但是,当我运行以下命令时:
混合构建发布产品--冗长
它编译应用程序,但稍后在创建版本时抛出此错误:
----->使用mix生成发布
**(混合)找不到任务“释放”
我对长生不老药和酿酒厂/edeliver世界还不熟悉,所以我想知道我是否在这个流程中遗漏了什么
以下是我的
我是长生不老药新手,对地图钥匙有疑问。我的地图定义如下:
a = %{"key" => 1}
我可以通过a[“key”]访问值,但不能a.key。如果我将映射定义为a=%{key:1},那么我可以通过a.key获得值。我想知道这两种声明密钥的方法有什么不同
如果我有一个通过a[“key']接受键的函数,并且我有一个定义为a=%{key:1}的映射,我如何将此变量传递给函数
例如,我有以下功能:
def fun1(data) do
data.key ... // access ke
由于不变性,我在弄清楚如何使用Elixir更新地图列表时遇到了一些问题。以下是我目前失败的尝试:
defp score_table_map(question, team) do
prediction_score = Enum.find(team.prediction_scores, &(&1.question_id == question.id))
construct_score_table(p_score)
end
defp construct_score_table
我有一些代码是失败的透析器,我不明白为什么。无论我在函数顶部的@spec中输入了什么,对该函数的调用都会返回令人费解的透析器错误。下面是函数的简化。据我所知,我已经正确地指定了函数
@spec balances(uuid::String.t(),重试次数::非负整数)::
{:好的,list()}
|{:internal_server_错误,String.t(),String.t()}
|{:internal_server_error,map|list,String.t()}
def余额(uui
我尝试在(子查询)
抛出错误:
值#在中查询,其中不能强制转换
键入{:in,:integer}
我找不到关于如何使用不在和谷歌子查询或聊天的答案,如文档中所述:
右侧可以是列表、文字列表,甚至是数据库中具有数组类型的列
也就是说,子句中的右侧不能是查询。最简单的解决方案是首先通过Repo.all(sub)从sub获取实际列表,然后使用此列表。这将导致1个额外的查询,IMHO是可以接受的
另一个解决方案是使用fragment,如果后面的DB允许在中使用SELECT语句
此引用可能也会出现。我不
标签: Elixir
phoenix-frameworkphoenix-channels
我最近将我的Phoenix应用程序从1.3升级到1.4
一切都很好,但当我离开某个页面时,会出现以下错误:
[error] GenServer #PID<0.509.0> terminating
** (FunctionClauseError) no function clause matching in Phoenix.Socket.__terminate__/2
(phoenix) lib/phoenix/socket.ex:544: Phoenix.Socket.__t
标签: Elixir
phoenix-frameworkecto
我得到了以下内容,如果平台存在,则将WHERE语句应用于EXTO查询
defp maybe_platform(queryable, false), do: queryable
defp maybe_platform(queryable, platform) do
queryable
|> where([c], c.platform == ^platform)
end
如何将此代码推广到任何变量(而不仅仅是platform)?(这是我正在挣扎的c.pla
我正在编写Phoenix 1.4编程手册,在为用户创建视图时,遇到了一个问题。我不断地得到一个编译错误,说
== Compilation error in file lib/rumbl_web/views/user_view.ex ==
** (CompileError) lib/rumbl_web/views/user_view.ex:3: undefined function conn/0
(elixir) src/elixir_locals.erl:107: :elixir_loc
我正在尝试处理由HTTPoison.request导致的错误带有
try do
%{"session_id" => session_id} = ElixirDropbox.Files.UploadSession.start(client, true, image_save_path)
write_sessional_values(session_id, file_size, "/#{construction}/#{camera_exid}/#{id}/#{starting}.jpg
标签: Elixir
phoenix-frameworkecto
我为插入模式编写了测试代码
defmodule DbServerWeb.GameSchemaTest do
use ExUnit.Case, async: true
use DbServer.DataCase
alias DbServer.Games
alias DbServer.Schema.Game
describe "insertion" do
@valid_params %{game_name: "test_name"}
@invalid_para
标签: Elixir
phoenix-frameworkphoenix-live-view
在常规控制器/视图中,假设我有AppWeb.ItemView和AppWeb.ItemController。假设我有两个不同的索引,:index和:index\u funky。如果我想为:index\u funky视图渲染index.html.eex,我可以在AppWeb.ItemView中创建一个渲染函数,头部render(“index\u funky.html”,assigns),内部执行渲染(“index.html”,assigns)。这很好:我将使用AppWeb.ItemControlle
假设我有这个模式:
schema "events" do
field :start, :naive_datetime
end
我想将start字段的默认值设置为/events/new页面加载的大致时间(“现在”)。让我们忽略用户通常不希望事件立即开始的异议,假设我们提前知道“现在”应该在哪个时区(例如“US/Mountain”)进行评估。您可以在变更集级别进行评估
def create_changeset(event, attrs) do
event
|
错误消息:
defmodule APIConnection do
def process_output({:ok, results}, _) do
Print.done()
results.body
end
def process_output({:error, results}, api_url) when results.reason == :timeout do
Print.error("MODULE:#{__MODULE__} - Conn
标签: Elixir
phoenix-frameworkproduction-environment
我手动编译和部署我的Phoenix项目,没有第三方库,例如蒸馏器,基本上是借助命令“mixcompile”和“mixrelease”
我需要一种在生产模式下在服务器上运行自定义命令或任务的方法。这类似于运行迁移。但我对它是如何完成的感到困惑。在执行命令或任务时,项目本身可能启动并运行,也可能不启动并运行。我需要能够向上述命令任务传递一些参数
怎么做
(1) 我知道
defmodule Mix.Tasks.MyTask1 do。。。。但在生产环境中,在服务器上,我该如何做呢?这是在生产环境中的服务
我使用EEx模板引擎来呈现HTML页面(这里没有Phoenix)。我正在将连接(Plug.Conn)Conn连同提取的参数列表(params)和会话映射(session)一起传递到模板:body=EEx.eval_文件(路径,Conn:Conn,参数:Conn.params,session:session)params和session仅为方便起见而提供,因为它们也在连接中
如果页面修改会话(使用cookie配置),比如说使用类似),这会修改连接,但这也会保持页面的本地性,并且不会传播
有没有办法
长生不老药版本:1.4
凤凰版本:1.3.4
我有一个release_task.ex文件,定义如下
defmodule Campaigns.ReleaseTasks do
@start_apps [
:mix,
:crypto,
:ssl,
:postgrex,
:ecto_sql,
:ecto
]
@repos Application.get_env(:campaigns, :ecto_repos, [])
def migra
上一页 1 2 ...
32 33 34 35 36 37 38 ...
下一页 最后一页 共 125 页