这似乎是一个非常愚蠢的问题,但如何在Elixir中获取并显示当前日期或时间?我试过了,但什么也找不到。我需要使用Erlang函数吗?我认为最好的选择是使用Paul Schoenfelder(又名BitWalker)的timex库来获得长生不老药。lib在这里:您可以从hex.pm获取包。Paul在github repo的自述页面上很好地解释了如何使用该库
您可以调用本地Erlang库,但我认为Paul的库在处理Elixir时更为优越。要更具体地回答您的问题(尽管我非常感谢Onorio建议使用Ti
标签: Elixir
phoenix-frameworkecto
我正在尝试创建一个基本的CRUD应用程序,但我在验证方面遇到了问题。以下是我的控制器操作:
def update(conn, %{"id" => id, "user" => params}) do
case Repo.get(User, String.to_integer(id)) do
user when is_map(user) ->
user = Map.merge(user, atomize_keys(params))
case Us
如何更改必填字段的错误消息?如果我有那样的东西
@required_fields ~w(name email)
我想显示“不可能是空的”,而不是默认值“不能是空的”此时,“不能是空的”错误消息已硬编码到Ecto中。但是,您可以通过执行以下操作来替换此错误消息:
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> req
我正在尝试从Elixir中的ODBC数据库中获取计数。我可以看到我的结果回来了,但是,我不知道如何提取值
{:selected, _, [{count}]} = {:selected, ['COUNT'], [{'182'}]}
{:ok,conn}=:odbc.connect('DSN=mydsn;UID=myuid;PWD=mypwd',[])
{:selected,_colNames,rows}=:odbc.sql_查询(conn,'select count(*)from mytable
我想求一个数的素因子。我写道:
defmodule Prime do
def factors(n) when is_integer(n) and n > 1 do
Stream.unfold(n, fn 1 -> nil; n -> &({&1, div(n, &1)}).(lf n) end) |> Enum.to_list
end
def lf(n) when is_integer(n) and n > 1 do
我正在使用,在路由方面遇到一些问题
在user\u socket.ex文件中:
defmodule Chat.UserSocket do
use Phoenix.Socket
channel "rooms:*", Chat.RoomChannel
transport :websocket, Phoenix.Transports.WebSocket
def connect(_params, socket) do
{:ok, socket}
end
def i
我有以下模式:
schema "products" do
field :product_id, :integer
field :title, :string
has_many :variants, MyApp.Variant, references: :product_id
timestamps
end
schema "variants" do
field :variant_id, :integer
field :title, :string
我试图设置一个登台环境,但在使用mix-env的prod以外的任何东西进行编译时遇到了问题。我试着用stag.exs文件和所有这些设置一个名为stag的自定义环境,但它似乎坏了。我很确定这是因为我在mix.exs中看到了这一行:
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
问题是我在我所有的deps文件夹中也看到了这一行。这是否意味着我应该使用prod的Mix.env,即使对于我的登台环境也是如此?我
在elixir iex中,我想知道基本步骤
1.如果我有模块以及如何导入
2.我想从“”中的l运行,其中并获取地图
Im尝试使用导入外部。查询导入,然后
我在''中从l运行了一些类似的,其中,我得到了这个
#异位查询,如何获取数据结果
import Ecto.Query
alias Repo
Repo.one(from s in Struct)
也许还可以看看你真的应该为你的问题添加答案,而不是用答案编辑问题本身。
我有一个函数,它返回一个映射,从List(:erlang.memory())转换而来。它像我预期的那样工作,但看起来并不漂亮。我怎样才能把这个片段提炼成更灵丹妙药的方式(意味着更美妙的逻辑)
来营救
NB请参考下面@Dogbert的宝贵评论。对于这个具体案例,还有|>Map.new.Enum.into/2和Map.new/1是优雅和长生不老药的解决方案。非常感谢。
{{:total, total}, {:processes, processes}, {:processes_used, proce
我要去拿
对象不支持属性或方法“匹配”
IE11使用phoenix框架附带的phoenix_html.js时出错,该框架包含event.target.matches(…)等代码
不幸的是,我必须支持IE11。
有解决办法吗?(希望有比修改phoenix_html.js更干净的方法)您使用的是哪一版本的phoenix\u html?phoenix_html@2.5.0Can您尝试升级到最新版本?当前版本不再在DOM元素上使用。匹配。它可以工作。谢谢!看起来phoenix_html中还有许多IE11
我想在一行中使用以下案例:
case s do
:a -> :b
:b -> :a
end
宏case定义为case(条件、子句)。以下
quote do
case s do
:a -> :b
:b -> :a
end
end
给出:
{:case, [],
[{:s, [], Elixir}, [do: [{:->, [], [[:a], :b]}, {:->, [], [[:b], :a]}]]]}
从这里可以返回到
我为我的长篇大论道歉
我有一个使用CQEx向Cassandra写入数据的小应用程序(出于各种原因,我被限制为Cassandra 2.1,因此我在我的prod.exs和dev.exs中指定了protocol\u版本:3)
我的mix.exs包含{:cqex,~>0.2”}和{:cqerl,github:“matehat/cqerl”}
我正在使用Distillery创建一个发布tarball,它被复制到运行Centos 7.2的机器上
爆炸tarball后,我运行bin/app start,它失败
我正在使用Elixir/Phoenix构建json API,框架使用此方法生成了我的UserController
def show(conn, %{"id" => id}) do
user = Repo.get!(User, id)
render(conn, "show.json", user: user)
end
如果我搜索一个现有的用户,这一切都很好,如果我搜索一个不存在的用户,我会得到以下异常
(Exto.NoResultsError)至少需要一个结果,但在查询中未
我想找到所有看起来像http://vk.com或https://stackoverflow.com在我的字符串中
如何通过Elixir中的正则表达式实现这一点?Elixir regexp for link看起来像:
regexp = ~r/ https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)/
因此,您可以通过以下方式成功找到字符串中的所有链接:
Re
我正在使用备份将Elixir项目部署到远程
我还成功地创建了systemd.service文件,该文件从命令行启动、停止、重新启动发布
但是,mix-edeliver-start-production命令似乎通过普通的goodbin/my_-app-startshell命令绕过systemd运行发布。我想要的是始终使用systemd,即使是热上载,因为它(与upstart不同)确实提供了reload功能
我找不到我应该告诉谁使用systemd重新启动发布。应该是交付策略吗?还有别的吗?我知道这个
我正在进行一个测试,在该测试中,我需要点击本地运行的服务。该服务是一个公开了JSON api的rails应用程序。它在3000端口上运行。当我执行此elixir代码时,我得到一个错误:
json_event = <some valid json built earlier>
my_url = "http://localhost:3000/api/service_call"
response = HTTPoison.post(my_url, json_event)
json\u事件=
是否可以像本例中那样进行多案例匹配?
我想合并两个地图,地图,可以是这样的:
map1=%{“test”=>[list]}
map2=%{“测试”=>[list2]}
如果我知道v1和v2都是列表,我可以这样合并它们:
Map.merge(map1、map2、fn\k、v1、v2->
在v1和v2处于列表状态的情况下对它们执行某些操作
像Enum.concat(v1,v2)
(完)
但是可以在case子句中检查v1和v2吗
Map.merge(map1、map2、fn\k、v1、v2->
案
我正在使用苦艾酒构建一个GraphQLAPI。数据存储是,它使用GraphQL+作为查询语言。它类似于GraphQL,但不完全相同
从理论上讲,这将使我处于一个极好的境地。类似GraphQL的查询
query {
user {
id
username
posts {
title
text
comments {
text
}
}
}
}
也可以是Dgraph中的一个查询。它看起来几乎一模一样:
但从其他模块导入,可以成功调用:
defmodule DemoMacro do
defmacro i_am_macro do
quote do
# ……
end
end
i_am_macro # (CompileError) example.exs:10: undefined function i_am_macro/0
end
我应该怎么做才能编译第一段代码?您正在从模块体调用宏,这意味着在编译阶段。在编译器阶段,此模块内容显然还无法访问,因为该模块尚
除了href标记外,下面的字符串插值工作正常
html_email_body = """
Hello #{username}!
<br/>
#{confirm_url}
<br/>
<a href=#{confirm_url}>confirm account2</a>
"""
i、 e.确认\u url值类似于“”
等号和哈希符号并排有问题吗?当我在iex中尝试您的代码时,我得到了
我目前正在学习长生不老药,我正在尝试打印函数及其算术
print = fn ({function , arity}) ->
IO.puts "#{function}/#{arity}"
end
Enum.__info__(:functions) |> Enum.each(print.())
这是回报
** (BadArityError) #Function<0.60149952 in file:learn.exs> with arit
标签: Elixir
phoenix-frameworkphoenix
我有一个类似于此简化代码的控制器:
defmodule Web.UserController do
use Web, :controller
alias App.User
action_fallback Web.FallbackController
def authorize(conn) do
# in my code I have somo checks here
conn
|> send_resp(403, "")
|&g
我在看两个维度的分组,然后计算每个类别/子类别中每个元素的数量
数据=[
%{品牌:“梅赛德斯”,颜色:“蓝色”},
%{品牌:“梅赛德斯”,颜色:“蓝色”},
%{品牌:“宝马”,颜色:“蓝色”},
%{品牌:“宝马”,颜色:“蓝色”},
%{品牌:“宝马”,颜色:“蓝色”},
%{品牌:“Lada”,颜色:“蓝色”},
%{品牌:“梅赛德斯”,颜色:“红色”},
%{品牌:“梅赛德斯”,颜色:“红色”},
%{品牌:“梅赛德斯”,颜色:“红色”},
%{品牌:“梅赛德斯”,颜色:“红色”},
在case语句中使用piped参数的语法是什么?我好像到处都找不到。我有两个“想法”,但我不知道哪一个是正确的,如果有的话
something
|> do_something()
|> case do
nil -> {:error, "ITS REAL NIL"}
%MyStruct{} -> Methods.next_something(&1.attrib)
_ -> {:error, "NAH BRUH. THE
我想知道,在长生不老药中,是否有可能为一个特定的协议辩护
def some_fun(f) when implement?(f, Dict.Behaviour), do: ...
或者有什么东西可以断言f是一个HashDict吗
谢谢 您可以执行以下操作:
iex> Enumerable.impl_for!([])
Enumerable.List
但这在守卫中不起作用。但是,这通常是一种不好的做法,您应该只调用协议
如果您特别担心HashDict,您可以这样做:is_recorddict
所以我在玩Elixir中的streams,我也在玩|>操作符;我有很多玩F#的经验,所以感觉很自然。所以我试了一下:
1..10 |> Stream.map &(&1 * &1) |> Enum.to_list
只需列出前十个方块的列表。但它不起作用。没问题;这似乎是一个运算符优先级的问题,因为它可以正常工作:
(1..10 |> Stream.map &(&1 * &1)) |> Enum.to_list
但是我想知道
大多数python项目的文档都存放在readthedocs.org上。是否有一些网站可以托管我们的Elixir项目文档,或者有没有一种方法可以将它们放在readthedocs上,而无需通过sphinx运行它们?Elixir文档本身是使用ExDoc生成的,ExDoc基本上将Elixir文档编译为html/css/js文件。我们目前正在主持会议
我很确定有人可以修改ExDoc,使其输出一种类似readthedocs.org甚至dash的格式(这听起来确实是一个有趣的项目),但我不知道今天有任何工具可
在阅读Phoenix教程(本节)时,我第一次注意到一个带有尾随感叹号/bang(!)的函数
后面的感叹号是什么意思?它有什么作用吗?我一直在四处搜索并尝试寻找,但我不确定我使用的术语是否正确。到目前为止,似乎只有作为约定的函数才会在失败时引发错误,但它始终意味着这一点
Dave Thomas的“编程长生不老药”中只提到了这一点:
Identifiers in Elixir are combinations of upper and lower case ASCII
characters, di
我有一个简单的Phoenix频道来处理消息的WebSocket。我尝试向数据库中添加模型插入,但在传入这些消息参数时出现了此错误
def handle_in("new:msg", msg, socket) do
message_params = %{"body" => msg["body"]}
changeset = Message.changeset(%Message{}, message_params)
case Repo.insert(changeset) do
请原谅我的新手问题,但是我发现了很多保护功能的例子,比如:
plug :assign_welcome_message, "Hi!" when action in [:index, :show]
但我没有发现如何使用模块插头执行此操作的示例:
plug Guardian.Plug.EnsurePermissions,
handler: Mp.Api.AuthController,
admin: [:dashboard] when action in [:protected_action]
在Riak KV中使用标志时,标志需要上下文。在Elixir客户端中,上下文由标志设置。新建(“我的上下文”),否则在尝试禁用该标志时将抛出:context\u required
现在,标志只能存在于一个映射中,映射中的每个元素都必须有一个键,因此多个标志可以存在于一个映射中,并且仍然可以通过键来区分
如果不区分它们,上下文的目的是什么?地图中的标志具有“添加胜利”或“真正胜利”的语义。这种语义是使用一种称为“观察到的移除”的因果关系技术实现的,该技术借用了观察到的移除CRDT集。在许多情况下,
标签: Elixir
phoenix-frameworkex-unit
我一直在研究答案
-除此之外,我的技术水平太低,以至于我对自己缺乏洞察力感到非常尴尬我被blog_controller_test.ex深深吸引,以至于完全忘记了真实的东西:
defmodule ScoutServer.BlogController do
use ScoutServer.Web, :controller
alias ScoutServer.Blog
# plug :action - not sure why, but without the comment the
在地图上执行地图操作最惯用的方式是什么
我想到了两种方法:
Enum.reduce(%{a: 1, b: 2}, %{}, fn({k,v}, acc) -> Map.put(acc, k, v+1) end)
# => %{a: 2, b: 3}
for {k,v} <- %{a: 1, b: 2}, do: {k, v+1}, into: %{}
# => %{a: 2, b: 3}
Enum.reduce(%%{a:1,b:2},%%{},fn({k,v},ac
标签: Elixir
phoenix-frameworkecto
假设我有以下的外星模型:
ForumCategory,有很多:论坛
论坛,属于:论坛类,有很多:论坛主题
论坛主题,所属论坛
假设我想加载ForumCategory的所有条目及其所有相关的Forum条目,并为以下各项加载最新的ForumTopic:
论坛类别->论坛->论坛主题
在论坛类别上预加载论坛很简单:
ForumCategory
|> preload(:forums)
现在我们还想预加载最新的论坛主题,但我们只想预加载每个论坛的单个最新主题,因此我们不会从数据库中加载整个论坛
标签: Elixir
phoenix-frameworkecto
我有以下用户模块:
schema "accounts_users" do
has_many :friendships, Friendship
has_many :friends, through: [:friendships, :friend]
timestamps()
end
友谊单元:
schema "accounts_friendships" do
belongs_to :user, User
belongs_to :friend,
测试字符串:
str = "#www #SoulMusic #50_shades_of_Blue # ##WorldWideWeb
#okie_dokkie #fr!ends #!alPacino #wonderfulRide
#good#club #rhônealpes #trèsbon #øypålandet http://example.com/#comment
#moreTags #www nobody #h3y!boy #EMAIL"
这就是
下面的代码在通过创建的
我正在尝试进行自定义验证,因此我创建了一个在变更集中运行的函数,但我得到了一个错误,目前对我来说似乎没有多大意义
这是我的模型:
@required_fields ~w(commissioner user_id league_id)a
def changeset(struct, params \\ %{}) do
struct
|> cast(params, @required_fields)
|> validate_required(@requ
当我这样做的时候
mix compile
我收到这样的信息
warning: variable "test_val" is unused
lib/myapp/mymodule.ex:46
我只是在做一个小项目,我现在不在乎这些警告。有没有办法把它关掉?看起来不可能,但我可能错了
生成警告的代码(据我所知)是elixir\u errors:warn,它没有任何可以关闭的标志
看起来也没有任何代码注释可以添加以抑制错误
将其视为elixir非常固执己见观点的另一个方面(与“只有一个格式化程
标签: Elixir
phoenix-frameworkecto
作业架构如下所示:
schema "jobs" do
# more fields and associations
field :fulfilled, :boolean, virtual: true
end
我拥有正常工作所需的SQL:
SELECT jobs.*, (SELECT COUNT(1) = 0
AS fulfilled
FROM slots
JOIN slot_groups on slots.
标签: Elixir
syntactic-sugarkeyword-argument
我有一个类似这样的函数
def test(options \\ []) do
# Fun stuff happens here :)
end
test foo: 1 do
"Hello"
end
它接受多个(可选)关键字参数,包括do:。我希望能这样称呼它
def test(options \\ []) do
# Fun stuff happens here :)
end
test foo: 1 do
"Hello"
end
然而,这给出了一个错误
正如您从错误中所看到的
这是我的模块:
defmodule Test do
def try(10 = num, other_num \\ 10) do
num + other_num
end
def try(_num, _other_num) do
raise "This is incorrect"
end
end
当我运行iex时,我收到以下警告:
warning: def try/2 has multiple clauses and also declares default va
开发人员您好,我在弄清楚如何使函数工作时遇到了问题
测试用例
test "count one of each" do
expected = %{"one" => 1, "of" => 1, "each" => 1}
assert Words.count("one of each") == expected
end
这就是我到目前为止想到的
@spec count(String.t()) :: map
def count(sentence) do
我在解决phoenix应用程序的依赖项时遇到问题:
我的mix.exs文件包含:
{:phoenix, "~> 1.4.0"},
{:phoenix_pubsub, "~> 1.1"},
{:phoenix_ecto, "~> 4.0"},
{:ecto_sql, "~> 3.0"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.11"},
{:phoenix_live_reload, "~> 1.2",
以下是Elixir在以下方面的实施:
def分组依据(可枚举、键乐趣、值乐趣\\fn x->x结束)
def分组依据(可枚举、键乐趣、值乐趣)功能(键乐趣)何时执行
减少(反向(可枚举),%{},fn条目,acc->
钥匙=钥匙乐趣。(输入)
值=值(输入)
案例acc do
%{^key=>existing}->Map.put(acc,key,[value | existing])
%{}->Map.put(acc,key,[value])
结束
(完)
结束
为什么将reverse/1功能
我只是在编写“长生不老药”和“升级拆分”的程序
我的代码如下:
defmodule MyEnum do
def split(l, n) do
def split_helper([], pre, _n), do: {pre, []}
def split_helper(l, pre, 0), do: {pre, l}
def split_helper([h|t], pre, n), do: split_helper(t, [h|pre], n-
标签: Elixir
abstract-syntax-tree
我正在尝试编写一个宏来保存数据结构的手动输入序列化/反序列化函数
目标是能够调用宏
Macros.implement_message(TheMessage, {:field_1, 0, unsigned-size(8)}, {:field_2, 0, unsigned-size(32)})
并在宏调用站点生成如下代码:
defmodule TheMessage do
defstruct [
field_1: 0,
field_2, 0,
]
def seriali
在Elixir中更新嵌套映射中的值时,我们可以使用Kernel.put_in/3
考虑到Map.put/3的输入和结果非常相似,为什么不在Map.put/3旁边定义此函数?Kernel.put\u in函数适用于任何具有访问行为的结构,根据其文档:
@spec put_in(Access.t(), nonempty_list(term), term) :: Access.t()
def put_in(data, [_ | _] = keys, value) do
elem(get_and_u
当一个函数只有一个定义时,使用卫士是否惯用
例如
或
首选哪一种?这取决于您希望参数的具体程度。我见过guard子句在函数中使用,在开源项目中只有一个定义,比如Oban。例如
@doc false
@spec validate!(Keyword.t()) :: :ok
def validate!(opts) when is_list(opts) do
Enum.each(opts, &validate_opt!/1)
end
这取决于您希望参数的具体程度。我见过
上一页 1 2 ...
20 21 22 23 24 25 26 ...
下一页 最后一页 共 125 页