在Elixir文档中,他们一直使用带斜杠的奇数符号,例如:
is_boolean/1
IO.puts/1
String.length/1
is_function/2
++/2
我只是在猜测,但我想它指的是算术。但如果是这样的话,为什么文件中没有提到魔鬼?这并不是它的任何标准约定(至少,这不是我20多年来在It行业中见过的约定)。你猜对了,这是函数的算术性。之所以它是一个重要的信息(许多语言中通常不包含),是因为具有相同名称但不同算术数的函数是不同的函数-例如Enum.reduce/2和Enum
尝试复制trello示例,无法使变更集与ForeignKey一起工作:
迁移:
defmodule Final.Repo.Migrations.CreateKw do
use Ecto.Migration
def change do
create table(:kw) do
add :keyo_id, references(:keyo), null: false
add :users_id, references(:users), null: false
Phoenix框架上有一个应用程序
需要GenServer,它将检查一些值
这些值的验证从控制器开始(来自客户端的请求、GenServer值检查、客户端接收响应)
一旦handle\u调用是同步的,那么当10个客户端一次调用10个handle\u调用时会发生什么?所有10个呼叫将并行处理或按队列顺序处理?GenServer将只处理单个呼叫,其他消息将在邮箱中排队。如果需要同步进程,您可以允许这样做,但您必须考虑邮箱,它可能会在负载较重的情况下很快堆积起来,可能会在没有任何警告的情况下杀死VM
你
标签: Elixir
phoenix-frameworkecto
考虑一个场景,您试图对银行事务的日志记录进行建模。交易具有金额、类型贷方或借方,并与账户关联
在添加新的银行交易的情况下,我可以这样做,而且效果很好:
Multi.new()
|> Multi.insert(:transaction, transaction_changeset)
|> Multi.update(:account, account_changeset)
|> Repo.transaction()
更新现有的银行交易稍微复杂一些。这是因为用户不仅可以更改金额,还
基于,我知道如何使用Poison.decode/2将JSON解析为结构:
defmodule User do
@derive [Poison.Encoder]
defstruct [:address]
end
defmodule Address do
@derive [Poison.Encoder]
defstruct [:street]
end
Poison.decode(response, as: %User{address: %Address{}})
但我该如何告诉凤
定义一个包含其自身类型结构数据的简单结构:
defmodule MyNode do
defstruct [:parent, :child]
end
创建父节点和子节点:
iex> p = %MyNode{}
%MyNode{child: nil, parent: nil}
iex> c = %MyNode{parent: p}
%MyNode{child: nil, parent: %MyNode{child: nil, parent: nil}}
在父节点中指定子节点:
i
如何实现一个可替换的后端(或基本上任何部分或模块),以便在Elixir中配置/部署时替换它
我的具体情况是一个简单的web应用程序(在本例中使用Phoenix,但我猜这个问题也适用于其他情况),其中我有一个非常简单的后端,使用Agent保持状态,但我认为未来需要能够或多或少地动态切换后端
我猜Ecto和Logger都在某种程度上做到了这一点,但作为长生不老药的新手,很难知道该去哪里寻找。这可以通过与主管的争论来解决。例如,Ecto的后端主管使用一个名为adapter的参数来指定应使用哪种数据库:
当您在elixir中定义匿名函数时,会得到如下结果
#功能
我注意到这个数字是基于函数的算术性。所以1 arg函数总是
#功能
两个参数的函数始终是
#功能
三参数函数始终是
#功能
返回的数字是什么?它是如何派生的?该数字由编译器生成的索引和函数的唯一名称组成。请看下面的图片。它包含以下段落:
"#Function<#{uniq(fun_info)}/#{fun_info[:arity]} in " <>
"#{Inspect.Atom.inspect(mod)}#{ex
在我学习长生不老药的过程中,我试图制作一个简单的符号来解析csv
我已经设法制作了一个sigil来实现这一点,但是我找不到一种方法使它能够处理特殊字符,例如
defmodule CommaSigil do
def sigil_v(lines, []), do: parse(lines,",")
def sigil_v(lines, delimiter), do: parse(lines,"#{delimiter}")
defp parse(lines, delimiter) do
实现结构重用的机制有哪些:定义一个结构,其中包含另一个结构的所有字段以及它自己的一些字段
我有这样的结构
defmodule VideoView do
defstruct name: nil, description: nil, video_link: nil, ...
end
defmodule ImagesView do
defstruct name: nil, description: nil, images: [], ...
end
defmodule Model3DView
我有两张桌子:
用户:
id
username
password
unique_index username
(the schema has a has_many other)
id
user_id - references(:users)
foo
index user_id
(the schema has a belongs_to user)
其他:
id
username
password
unique_index username
(the schema has a has
标签: Elixir
phoenix-frameworkexrm
将我的Phoenix应用程序目录从Macbook复制到Fedora VM后,我尝试构建生产exrm版本,但引发了一个异常:
==> Building release with MIX_ENV=prod.
==> Generating relx configuration...
==> Generating sys.config...
==> Generating boot script...
==> Performing protocol consolidation
标签: Elixir
phoenix-frameworkecto
我正在尝试将Guardian实现到我的API中,并通过它进行登录以获取JWT。我正在看的教程是。问题是使用与示例中使用的用户模型类似的用户模型来实现登录。模型代码如下所示:
defmodule PushflightServer.User do
use PushflightServer.Web, :model
use Ecto.Repo
import Ecto.Query
alias PushflightServer.Repo
schema "users" do
field
当使用:simple\u one\u for\u one策略时,我们指定要动态启动的子项:
supervise([worker(FooServer, [])], strategy: :simple_one_for_one)
然后,我们使用以下类似的方法来启动子项:
def start_child(arg1, arg2) do
Supervisor.start_child(__MODULE__, [arg1, arg2])
end
各国(强调我国):
在:simple_one_for_on
我希望以指定的顺序累积不同进程发送的消息的输出
例如,我有一个PID列表[pid0,pid1]。如果我先得到pid0,那么就可以了。如果我首先得到pid1,那么在得到pid0之前不会发生任何事情
我知道这可以通过使用地图或关键字查找和在收到所有消息后排序来解决。然而,这可以通过模式匹配来实现吗
例如,编写这样的内容以确保它只尝试接收消息input\u pid(列表中的第一条消息):
让我们先看一个不起作用的示例,然后找到修复它的方法:
caller = self
pids = for x &l
我的代码中有:
<%= for empresa <- @empresas do %>
<%= render myProject.ComponentView, "smallPlacard.html",
smallPlacard_id: "1",
smallPlacard_class: "Company",
smallPlacard_mainText: company.name
%>
<% end
我在玩长生不老药。只是想知道是否可以使用pipe|>操作符将参数传递给匿名函数。这就是我的意思
a = [1,2,3] #=> [1,2,3]
m = fn ([h|t]) -> [ h*h | m.(t) ] end #=> head squared and call m with tail. Not sure how to use & shortcut for this.
m.(a) #=> [1,4,9]
a |> m #=> undefine
有人能帮我们解释一下为什么我们的论点是错误的吗?难道我们不应该这样检查真实性吗?关于长生不老药1.3
iex(1)> true and true
true
iex(2)> "true"
"true"
iex(3)> true
true
iex(4)> true and "true"
"true"
iex(5)> "true" and true
** (ArgumentError) argument error: "true"
从文档中:
Elixir还提供了三个布
标签: Elixir
phoenix-frameworkecto
如何在回购插入后使用自定义模型功能预加载选定数据?我不会从控制器中的模型复制代码
在Post模型中:
def preload_all(query) do
tags = from(t in Tag, select: %{id: t.id, value: t.id})
from b in query, preload: [:user, tags: ^tags]
end
在控制器中:
case Repo.insert(changeset) do
{:ok, post} ->
我正在尝试使用毒药解码以下json字符串
iex(1)> fetch(1)
{:ok,
"{\"name\":\"Anabela\",\"surname\":\"Neagu\",\"gender\":\"female\",\"region\":\"Romania\"}"}
iex(2)> fetch(2)
{:ok,
"[{\"name\":\"Juana\",\"surname\":\"Suárez\",\"gender\":\"female\",\"region\":\"A
我希望能够在模板内的渲染函数中动态选择模块名称。所以我尝试了这个,但是我得到了错误:
<%= render if i.compType == "mod" do MyProj.ModuleView else MyProj.ComponentView end, i.compName %>
最终结果将是:
<%= render MyProj.ModuleView, "module.html" %>
或
最好的方法是什么?您只是缺少一对括号:
<%= ren
我有4个模型,它们关联为
表格
has_many :form_fields, FormField, on_delete: :delete_all
has_many :fields, through: [:form_fields, :field]
has_many :conditions, Condition, on_delete: :delete_all
字段
has_many :form_fields, FormField, on_delete: :delete_all
has_many :
我有以下模式:
schema "countries" do
belongs_to :code, CountryCode, references: :alpha2
belongs_to :language, LanguageCode, references: :code
field :text, :string
timestamps
end
我的问题是,如何为上述模式编写变更集函数
我试过:
def changeset(model, params \\ %
我有2个列表(也可以是另一种数据类型),表示2个向量时钟。如何同时迭代两个列表并验证此条件:w[k]您要查找的Enum.zip/2:
def check(w, v, j) do
Enum.zip(w, v)
|> Enum.with_index
|> Enum.all?(fn {{ww, vv}, k} -> k == j || ww <= vv end)
end
def检查(w、v、j)执行
Enum.zip(w,v)
|>使用_索引枚举
|>Enum.a
我想用a来理解长生不老药,循环n次,每次积累一些结果
例如:
for i <- 0..n, y <- 1..3, do: y
对于i你的理解没有返回空列表的原因是因为范围0..0不是空的。如果运行0..0 |>Enum.map(fn x->x end),这一点很明显;您将返回[0]。x..y语法是“给我一组以x开头,以y结尾的数字”的缩写;毫不奇怪,从零开始并以零结束的所有整数的列表包含一个数字零,因此应该0..0
换句话说,0..n(转换为列表时)的长度始终为n+1。因此,对该列
我正在为Phoenix Elixir应用程序编写身份验证。我的浏览器管道中有一个插件,用于检查会话中的用户id。如果存在,我将用户添加到conn:
路由器
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
plug
标签: Elixir
phoenix-frameworkecto
我有一个模型,我想在凤凰城/长生不老药执行。该模型基本上计算用户花费金额的滚动总和。模型(收据)如下所示:
---------------
| ID | Amount |
---------------
| 1 | 0 |
| ...| ... |
| 5 | 4 |
---------------
ID上有一个唯一的索引。我想在表中插入一个用户(我定义了ID),然后设置该用户不存在时的金额,否则将新金额添加到现有金额中。例如,执行:
Repo.insert(Us
是否可以访问某个条件的结果值?例如:
cond do
Map.get(values, :foo) ->
IO.puts "Value: #{foo}"
true ->
IO.puts "No value"
end
我想你想要这样的东西
cond do
value = Map.get(map, :key) ->
IO.puts "Value: #{inspect value}"
true ->
IO.
标签: Elixir
phoenix-frameworkectochangeset
我和外星变形金刚玩得很不开心。我试图简单地创建一个带有“空”变更集的新表单。点击控制器并调用Session.changeset(%Session{})行。然后点击Site.Session.changeset。在那里,cast调用失败,出现以下错误。下面是完整的堆栈跟踪。Elixir 1.4,雨伞应用程序
控制员:
defmodule Site.SessionController do
use Site.Web, :controller
alias Site.Session
def
使用已知数量的流与此答案相关:
如何构建一个create_stream函数,以类似的方式嵌套任意数量的流,即:
create_stream([1..1_000_000, 1..5_000_000])
#should be equivalent to:
Stream.flat_map 1..1_000_000, fn i ->
Stream.flat_map 1..5_000_000, fn j ->
[{i, j}]
end
end
及
这很可能不如手动嵌套St
我是elixir的新手,我正在试图找出重写此ruby方法的正确方法:
def filter_events(events)
events.select { |event| event[:id].present? && event[:vhost].present? }
end
长生不老药。这就是我到目前为止所做的:
def filter_events(events) do
Enum.filter(events, &(Map.has_key?(&1, :id)
我正在尝试与hound进行集成测试。
测试如下所示:
defmodule RedBeardWeb.UserCanRegisterTest do
use RedBeard.DataCase
use ExUnit.Case
use Hound.Helpers
hound_session()
...
name = find_element(:class, "header__user_name")
name_text = visible_text(name
所以嵌套映射不能直接更新,我们必须使用put_in。例如:
iex(1)> m = %{a: %{b: 1}}
%{a: %{b: 1}}
iex(2)> m[:a][:b]
1
iex(3)> m[:a][:b] = 2
** (CompileError) iex:3: cannot invoke remote function Access.get/2 inside match
(stdlib) lists.erl:1354: :lists.mapfoldl/3
i
假设我们有以下实现:
defmodule SomeModule do
@celcius_coefficient 800
@rheinan_coefficient 900
@fahrenheit_coefficient 1000
@available_units [:celcius, :rheinan, :fahrenheit]
def foo(some_struct) do
some_var = get_var(some_struct, :var_name)
当一门语言的创造者回答你的问题时,在它的生命中足够早地学习它是很棒的!好吧,我的问题是-如何从Phoenix controller方法中与代理通信?我在hello_blockchain/monitor.ex中看到了这个:
defmodule HelloBlockchain.Monitor do
def start_link do
Agent.start_link(fn -> %{} end)
end
def put(pid, key, value) do
Ag
给出两种可能的输入:
a=%{inner:%{hello::world}
或
a=%{}
我想将b=%{foo::bar}合并到映射中以生成:
%%{inner:%%{foo::bar}在第一种情况下,或
%%{internal:%%{hello::world,foo::bar}}在第二行
我可以用计算机解决它
merged = Map.get(a, :inner, %{})
|> Map.merge(b)
put_in(a, [:inner], merged)
但是有更好的内在方式吗?
我设置了一个主管来监督websocket:
children = [
%{
id: Slack.Bot,
start: {Slack.Bot, :start_link, [MyBot, [], "api_token"]}
}
]
opts = [strategy: :one_for_one, name: MyBot.Supervisor]
Supervisor.start_link(children, opts)
MyBot通过websocket发送消息时会收到各种回调
请建议更好的方法(更多的长生不老药方法)将下面的C代码写入长生不老药
int some_num = 0;
for(int i = 0; i < 100; i++){
for(int j = 0; j < 1000; j++){
for(int k = 0; k < 10000; k++){
some_num += 1;
}
}
}
printf("%d", some_num);
int some_num=0;
对于(int i=0;i
我通过凤凰城为我的水疗中心服务,决议如下:
当我移动到发布版本时,spa会出现在一个具有版本名称的目录中,例如:
/opt/appname/lib/appname-0.0.1/priv/static/index.html
这似乎是一种脆弱的方法,因为每次发布新版本的应用程序时,新版本都会导致此链接中断
是否仍然可以从相对路径为应用程序提供服务?由于它位于app\u name目录的priv中,您可以执行以下操作:
Application.app_dir(:app_name, "priv/stat
我正在开发一个文件系统seaveedfs。我们在上面用适当的目录结构保存了文件,如server/camera\u id/snapshots/recordings/year
我正在尝试删除年下的空文件夹
def clean do
摄像机=
摄像机
|>预加载(:所有者)
|>订购人(描述::创建地点)
|>Evercam.Repo.all()
年份=[“2015年”、“2016年”、“2017年”、“2018年”、“2019年”]
服务器=[@seaweedfs\u新、@seaweedfs\u旧、
我正在尝试模式匹配映射中的一个键值,并放弃其他所有内容
identity = RedditOAuth2.get_identity(access_token)
# here is how i am getting the key "name" right now.
name = Map.get(identity, "name")
#----------------------------------------
# How would i do something like this
%{"nam
我正在试用长生不老药库,在转义值方面遇到了一些问题
基本上,我有一些文本,我不想被转义,只是在它的原始状态添加
例如,在我的控制器中:
conn
|> assign(:scripts_js, "alert('ok')")
然后在模板中,我执行以下操作:
script do
text @scripts_js
end
然而,其结果是:
警报(';正常';)
我还尝试了部分:
script do
partial @scripts_js
end
但结果也没有发生
我
我最终希望在我的几个字段上有一个检查约束,如果其中任何一个字段不为null,那么我不希望其中任何一个字段为null
我对此有一个工作检查约束,但当我将它应用到我的exto.Changeset使用时,一次只能在一个字段上使用它
所以我想我会把它们用管道连接起来。如果约束在多个字段上出错,它会将错误添加到每个字段
像这样:
%Ecto.Changeset{
valid?: false,
errors: [*error_for_field_one*, *error_for_field_
我是长生不老药生态系统的新手。我的Elixir/Phoenix应用程序中有一个导入脚本,当我尝试从命令行运行它时,它不起作用,因为Phoenix堆栈没有用我的命令加载
以下是我试图运行的内容:
elixir lib/mix/tasks/import/users.ex
我得到:**(CompileError)lib/mix/tasks/import/users.ex:7:module mix.exto未加载且找不到
有没有办法告诉我的命令加载堆栈
这是我的users.ex import
defm
我有嵌套映射的列表
[ %{
"name" => "sam",
"p" => [
%{
"amount" => "$10",
}
],
"group" => "a",
},
%{
"name" => "lisa",
"p" => [
%{
"amount" => "$20",
}
],
"group"
我正在运行一个简单的牛仔服务器。这是我的申请文件:
defmodule MyApp.Application do
@moduledoc "Application file"
我试图定义一个函数,其中我指定了关键字列表的一部分,然后将其余选项匹配为尾部
def my_func(foo: 22, bar: 42 | baz) do
IO.inspect(baz)
end
my_func(foo: 22, bar: 42, another_arg: 11, even_more_args: 12)
其想法是将baz作为一个关键字列表,其中包含[另一个参数:11,甚至更多的参数:12]
此操作无法编译,失败并出现以下错误:
错位运算符|/2
|运算符通常在括号之间用
我通过如下的查询参数获取输入:127.0.0.1:8000/对?a=[{A1,B1},{A2,B2},{An,Bn}]。我需要访问该元组列表并对其进行修改,这样结果就是一个包含两个元组的列表,第一个元组包含原始列表中每个元组的第一个元素,第二个元组包含每个元组的第二个元素(例如[{A1,A2,…,An},{B1,B2,…,Bn}]):
Input: [{a,5},{2,x},{r,r}]
Output: [{a,2,r},{5,x,r}]
问题是,如果我这样做:
conn = fetch_q
例如,这需要如何更改以防止名称字段中的自动完成
<%= form_for @changeset, @action, fn f -> %>
<%= label f, :name %>
<%= text_input f, :name %>
<%= error_tag f, :name %>
<% end %>
%>
您只需为表单和文本输入设置自动完成:“关闭”
<%= form_for @changeset, @a
我有两个表用户和公司。用户属于一个公司,一个公司有很多用户
我有一个表单,可以将用户添加到公司中,该公司是作为嵌套表单实现的(inputs\u for),因此在公司的变更集中,我调用了cast\u assoc
def changeset(company, attrs) do
company
|> cast(attrs, [:name, :email])
|> validate_required([:name, :email])
|> cast_a
上一页 1 2 ...
65 66 67 68 69 70 71 ...
下一页 最后一页 共 125 页