我知道String.strip/2,但我不知道它用于删除空白
String.strip "_some_", ?_ #=> "some"
如果字符串中有空格而不是u,如何去除它们?还有,如果有人能解释一下是什么,那就太好了?这里的意思是。有一个String.strip/1可以去除所有unicode空白。所以你可以
iex(2)> String.strip("\t\ntest ")
"test"
字符前面的问号返回其代码点,在《入门指南》的这一节中有提到:供其他人参考:相关问
我有一个关于Elixir中的case语句的简单问题(Kernel.SpecialForms.case/2确切地说:,)。有时,我需要几个子句/模式匹配来执行相同的事情。我总是能找到一个有警卫的解决方案来伪造它,但我想知道是否有可能定义几个模式匹配来执行同一个代码块
例如,在Ruby中(我在Ruby中不使用case,它只是一个示例),您显然可以这样做:
case condition
when clause1, clause2
value1
when clause3
valu
我的测试中有这个代码
setup do
client = Exredis.start
on_exit fn ->
client |> Exredis.query ["FLUSHALL"]
end
{:ok, client: client}
end
当我运行混合测试时,我永远不会得到一个错误,说匿名函数的闭包上不存在客户端进程。测试将继续运行,我的测试将失败,因为它清除了我的Redis
另一方面,如果尝试在不存在的进程上运行Exredis.query,则会
标签: Elixir
phoenix-frameworkecto
我使用phoenix.gen.html创建了一个简单的用户模型,其模式在models/user.ex中生成,如下所示
schema "users" do
field :name, :string
field :email, :string
field :bio, :string
field :dislikes_turnips, :boolean
timestamps
end
除了models/user.ex之外,还创建了
我正在使用ets via elixir作为一个简单的内存持久层来存储和检索密钥,也用于偶尔的foldl,它涉及到减少许多具有不同值的重复密钥。我正在使用包选项
有没有一种简单的,也许是O(1)的方法来检索当前键的列表,而不必进行更复杂的表遍历、匹配或foldl
欢迎使用Erlang或Elixir
:ets.new(:cache, [:bag, :named_table, :protected])
我有一个由整数索引的原子键的静态映射,我用它来帮助插入。但并不是所有的钥匙都用过
chunk_ke
假设长生不老药库定义:
defmodule Decoder do
def decode(%{"BOOL" => true}), do: true
def decode(%{"BOOL" => false}), do: false
def decode(%{"BOOL" => "true"}), do: true
def decode(%{"BOOL" => "false"}), do: false
def decode(%{"B" =&g
我有一个mix.exs文件,它有一些依赖项:
def deps do
[{:nadia, "~> 0.4"}]
end
假设我想将Nadia更改为0.3版。我很难做到这一点
更改为mix.exs后,我无法为Nadia获得0.3版。mix deps.update或mix deps.unlock&&mix deps.update都不能帮助我
我相信有办法做到这一点;我就是找不到
提前谢谢 需求~>0.3给出0.4.0的原因是~>0.3相当于>=0.3.0和=0.3.0和0.3.0:
我写了一个很棒的标语:
defmodule Sigiltest do
@“医生”
一个很棒的标志!
###用法
iex>~a{我爱长生不老药}
“我喜欢长生不老药,太棒了!"
"""
def sigil_a(内容、标志)do
“{content},太棒了!”
终止
终止
以下是测试模块:
defmodule SigiltestTest do
使用ExUnit.Case
doctest Sigiltest
终止
当我运行混合测试时,我得到以下输出:
Compiled lib/sigiltest
可能吗?如果是,怎么做
以下代码在IEX中执行
但是,编译后的代码会生成运行时错误
:ets.fun2ms(fn({a,b}) -> a and b end)
错误如下:我想知道如何正确调用
** (exit) exited in: :ets.fun2ms(:function, :called, :with, :real, :fun, :should, :be, :transformed, :with, :parse_transform, :or, :called, :with, :a
标签: Elixir
phoenix-frameworkecto
我目前正在编写Phoenix的代码,遇到了一个让我困惑的错误
当我运行Rumbl.TestHelpers.insert\u user
** (Ecto.InvalidChangesetError) could not perform insert because changeset is invalid.
* Changeset changes
%{name: "Some user", password: "supersecret", password_hash: "$2b$12$ZaSx6
我理解如何使用@type指令定义用户定义的类型。到目前为止,我只在函数规范中见过它的用法。我很想知道它的使用是否可以扩展到结构,使参数和数据类型之间紧密耦合
我开始用一个示例程序进行探索
iex(1)> defmodule Result do
...(1)> @type t ::%__MODULE__{ status: String.t, value: integer}
...(1)> defstruct status: "OK", value: 100
...(1)&
我有以下代码可以读取wikipedia转储文件(~50 GB)并根据请求交付页面:
defmodule Pages do
def start_link(filename) do
pid = spawn_link(__MODULE__, :loop, [filename])
Process.register(pid, :pages)
pid
end
def next(xml_parser) do
send(xml_parser, {:get_next,
标签: Elixir
phoenix-frameworkectoboxen
我正在开始我的长生不老药/凤凰之旅,我的博士后连接有一些问题
当我启动服务器时,我得到:
$ mix phoenix.server
[error] Postgrex.Protocol (#PID<0.214.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
[error] Postgrex.Protocol (#PID<0.217.0>
标签: Elixir
phoenix-frameworkdistillery
我浏览了文档,但无法运行基本的Phoenix应用程序。我是这样做的:
mix phoenix.new test_app --no-ecto
cd test_app
然后我更新了mix.exs文件,以包括酿酒厂部分:
[...]
defp deps do
[{:phoenix, "~> 1.2.0-rc"},
{:phoenix_pubsub, "~> 1.0.0-rc"},
{:phoenix_html, "~> 2.5"},
{:phoenix_liv
有人能解释一下控制器中的变量是如何神奇地作为模块属性出现在视图中的吗
例如,此渲染/3在控制器中:
defmodule MyApp.UserController do
def show(conn, %{"id" => user_id}) do
render conn, "show.html", user: Repo.get(User, user_id)
end
创建可在模板中使用的属性@user,如:
Hello, <%= @user.first_name %>
假设我有一个结构,struct=%MyApp.MyModel{filled_with_data:“true}
如何获取结构名(MyApp.MyModel)它存储在名为\uuuuuuuuuuuuuuuu的字段中,因此struct.\uuuuuuuuuuu结构==MyApp.MyModel结构携带__
在他们身上。所以
struct.__struct__
如果需要将结构的名称作为不带“Elixir.”前缀的字符串,但保留任何模块前缀,则应执行以下操作:
name = your_map.__stru
假设我有一张地图:%{a:b}。我正在检查它并得到%{a:\'b\'}。如何将此字符串转换为elixir中的地图?有什么优雅的方法吗?有一些函数允许您将Elixir数据类型封送/解封到:erlang.term\u to\u binary和:erlang.binary\u to\u term。然后可以将二进制字符串写入文件以供以后使用。但是,生成的二进制文件不是很可读
inspect协议旨在让人们读取而不是封送数据结构。如果您避免了诸如Pid或Reference等不透明类型和不完整列表的明显缺陷,
我正在研究长生不老药,并试图用头尾法以某种特定形式获取数据
我有这类数据[“09:89-87:45”,“23:23-23:23”,“65:65-23:04”]
用头和尾巴?我可以把这些数据输入[[“09:89-87:45”]、[“23:23-23:23”]、[“65:65-23:04”]表格吗
我现在所做的工作不好
iex(14)> defmodule Gy do
...(14)> d
我可以用这种方式创建自己的插件模块
比如说,我想检查请求中是否有头及其值,如果它们正确,继续,如果没有,终止当前请求并返回特定的状态和消息,可能是json
但是,不允许从插件模块返回html或json或任何其他内容,它只能修改在传递到控制器的过程中传递给它的连接结构
那我怎么做呢?我是否应该在其中添加某个密钥,然后在控制器中检查它?但这会造成很多重复,不是吗
# plug module
def call(conn, default) do
if condition1
标签: Elixir
phoenix-frameworkecto
我想为上班族做一个“每日祈祷午餐”应用程序,使用。我想制作的模型是Votation,每个Votation都包含许多嵌入式模式(阅读了解嵌入式模式的信息)。模型如下所示:
defmodule WhereToLunch.Votation do
use WhereToLunch.Web, :model
schema "votations" do
embeds_many :restaurants, Restaurant
timestamps()
end
@doc ""
有没有办法缩短这些类型的方法调用:
aaa = Enum.find(Statuses, fn(x) -> x.name == :pending end)
对这样的事情:
aaa = Enum.find(Statuses, &==, [:name, :pending])
也就是说,要将算术运算符“==”、结构字段名name和值:pending作为参数传递 您可以使用:
aaa = Enum.find(Statuses, &(&1.name == :pending
有没有一种方法可以将列表中的列表进行理解?或者下一个最好的是什么
my_lists = [[1,2], [3,4], [5,6]]
# ... magic ...
do_a_for_with_these_lists &([&1,&2,&3])
# for a <- [1,2], b <- [3,4], c <- [5,6], do: [a,b,c]
[[1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [2,
如何通过将键的值作为初始值来更新映射中的值?也就是说,我想将字符串值转换为小写形式,如下所示:
Map.update(m1, "key1", ???, &String.downcase/1)
“?”中应该有什么,因为它需要初始值?由于初始值仅在键不存在时使用,因此您可以将nil作为默认值传入,如下所示:
Map.update(m1, "key1", nil, &String.downcase/1)
由于该初始值仅在键不存在时使用,因此您只需传入nil作为默认值,如下所示:
M
标签: Elixir
phoenix-frameworkplug
在我的Phoenix应用程序中,我的插件如下所示:
defmodule MyApp.Web.Plugs.RequireAuth do
import Plug.Conn
import Phoenix.Controller
import MyApp.Web.Router.Helpers
def init(_options) do
end
def call(conn, _options) do
if conn.assigns[:user] do
conn
标签: Elixir
phoenix-frameworketsphoenix-channels
我正在构建一个协作绘图板(例如r/place):有一个像素网格,用户可以随时更改,像素更新会传播到所有其他在线用户。我想用凤凰频道来播放像素的变化
我的问题是,当用户连接到服务时,如何正确发送当前应用程序状态
目前,我有一个ETS表格,其中包含绘图板状态。我可以在MyChannel中更新此表。在广播任何像素写入之前,请在/3中处理\u
我担心的是,在读取MyChannel.join中的当前状态和Phoenix订阅该频道的用户之间,另一个过程会更新状态
用户将获得应用程序状态的过时版本,并且他们还
标签: Elixir
phoenix-frameworkecto
在Phoenix应用程序中,我想将会话记录保存到Postgres DB中,expires字段为12小时后。Mysession模型将expires字段设置为外部日期时间
型号
schema“sessions”做什么
字段:键,:字符串
字段:expires,exto.DateTime
字段:用户id,:整数
时间戳()
结束如果exto.Date起作用,数据库中字段的类型可能是Date而不是utc\u datetime(PostgreSQL中的时间戳)。将其更改为utc\u datetime可以
标签: Elixir
phoenix-frameworkecto
我想通过多个关联查询筛选结果。我是否必须使用Elixir来完成这项工作,或者我可以使用EXTO在数据库中完成这项工作
安装程序
priv/repo/seeds.exs
{:ok, invoice1} = Shop.Accounting.create_invoice(%{number: "1", issued_on: "2017-01-01"})
{:ok, invoice2} = Shop.Accounting.create_invoice(%{number: "2", issued_on: "
在Elixir中使用管道操作符时,是否可以选择/指定从第一个函数传递到第二个函数的输出
例如,我分三步处理一个映射-我需要删除两个键,更新另一个键的值,最后弹出另一个键,我需要在以后的代码中使用该键的值。以下是我理想情况下能够实现的一个示例:
for r <- records do
{scope, record} =
Map.drop(r, [:__struct__, :__meta__])
|> Map.get_and_update(:id, fn curre
我正在尝试使用elixir中的Dropbox URL下载图像,代码如下:
%HTTPoison.Response{body: body} = HTTPoison.get!("https://www.dropbox.com/s/fxot6tgw21mthg8/WeVnWhite-1.JPG")
File.write!("image.jpg", body)
已使用file.write成功创建文件/2.但当我试图打开它时,它显示文件已损坏,并且文件大小也与原始大小不同。您正在下载Dropbox并将其
我有一个league模型,league有许多团队。我只希望一个用户能够创建一个球队每个联赛。我发现这个验证很棘手。这是我目前正在尝试的
def changeset(%Team{} = team, attrs \\ %{}) do
team
|> cast(attrs, [:name, :league_id, :user_id])
|> validate_required([:name, :league_id, :user_id])
|> one
标签: Elixir
phoenix-frameworkhttpoison
我正在使用Httpoison执行一个get请求,并希望使用case语句对响应进行模式匹配。代码如下:
def current() do
case HTTPoison.get!(@api_url) do
{:ok, %HTTPoison.Response{body: body, status_code: 200}} ->
IO.puts body
{:error, %HTTPoison.Error{reason: reason}} ->
如何将shell脚本作为混合别名运行
我尝试了以下方法,但没有成功:
defp aliases() do
[
"test": [ "./scripts/test.sh" ]
]
end
defp aliases() do
[
"test": [ "scripts/test.sh" ]
]
end
每个返回值的变化如下:
**(Mix)找不到任务“/scripts/test”您可以为此调用Mix.Tasks.Cmd任务:
"test": ["cmd ./scri
为什么以下表达式的计算结果为“true”
因为在长生不老药中,&&'的优先级高于| |。我想你想要的是
(true || false) && false # => false
&&具有比| |更高的优先级,因此true | | | false&&false的计算结果为true | |(false&&false)您期望的结果是什么?一般来说,如果这样的语句中存在任何歧义,添加括号以确保计算顺序通常是一个好主意。“更强的关联性”并不完全正确。正确地说,&的优先级高于|,因此首
标签: Elixir
phoenix-frameworkgen-server
我需要在运行时创建进程,以保持不同的状态。
我在my:config中有一个用户列表,例如:
config :backend,
users: [user1, user2, user3]
是否可以循环浏览此列表并为每个列表创建一个受监控的代理或Genserver?假设confix.exs中的代码正确
config :backend,
users: ~w[user1 user2 user3]
要动态启动受监督的子级,可以使用e。g、
在静态初始化代码中,启动DynamicSuperviso
标签: Elixir
phoenix-frameworkyarnpkg
npm通常比纱线慢几倍,这就是Rails使用它的原因。Phoenix tasks是否也可以选择使用它而不是npm?如果没有,我会考虑一个PR.< /P> < P>简短的答案是否定的。
知道这一点很好,但这并不能解决编译和现场重新加载拾取纱线的问题。因为npm太慢了,我可能最终会选择凤凰城。
我有这个数据,
[
%{
company_id: "ocsc.ie",
created_at: "Wednesday, 08 Mar 2017 6:14 AM",
name: "O'Connor Sutton Cronin",
session_count: 2,
user_count: 8
},
%{
company_id: "virtuspm.ie",
created_at: "Tuesday,
这里过滤列表是一个包含字符串的列表,但当我打印映射集时,它返回一个空集。为什么?对于过滤列表中的每个项目,您正在回调函数的作用域中创建一个新的映射集。您不能在回调函数中重新绑定上部作用域的map_集,尽管您可以读取它,但重新绑定它只会生成一个新的作用域变量。相反,您应该使用表达式的返回值。比如说
filtered_list = ["foo", "bar"]
map_set = MapSet.new() # this is actually redundant
map_set
我有一些类似的外部结构:
defmodule MyApp.ForumCategory do
使用MyApp.Schema
“论坛类别”模式
字段:名称,:字符串
字段:最后一个主题,:地图,虚拟:真
字段:last_post,:map,virtual:true
结束
结束
defmodule MyApp.ForumTopic do
使用MyApp.Schema
“论坛主题”模式
字段:名称,:字符串
时间戳()
属于:论坛类别,MyApp.ForumCategory
有很多:论坛帖子,MyAp
我刚刚开始用长生不老药做实验。
1是否有更简洁的方法开始N?
2创建一个{symbol,task}与创建一个任务相比,我会更好吗
stocks=["bsx","wmt"]
# assume this is a long-running function
longfunc = fn(sym) -> "nyse:"<>sym end
tasks = Enum.reduce(stocks, [], fn(x,acc) -> [Task.async(fn -> lon
大家好,我对长生不老药很陌生,我想知道如何在长生不老药中作为参数传递列表,我应该使用什么方法?您可以将它作为所有其他参数函数(参数)传递。您只需像任何其他参数一样传递它:示例函数调用(示例列表)
我有一个特定的测试,需要生成一个cowboy服务器,监听端口8082,返回一些静态响应
客观的
通常,我会在application.ex文件中启动一个牛仔进程,如下所示:
def start(_type, args) do
children = children([{Cowboy, scheme: :http, plug: MyServer, options: [port: 8082]}])
opts = [strategy: :one_for_one, name:
我有一个函数,可以接受n多个参数(它是devinus/sh函数),您可以在其中执行命令行程序并获得结果:
示例:Sh.file“-b”、“--mime类型”、文件路径
但是我想把参数放在一个数组中,这样它们就可以根据调用函数的方式而变化
我想要的示例:
data = ["-b", "--mime-type", path_to_file]
# a way of going through the array and turning it into the parameters for the S
标签: Elixir
phoenix-frameworkecto
我有下面的外胚层模型。当我试图渲染时,我得到一个错误。我如何修改@derive使其能够预加载?还是我必须写下实施方案?建议的处理方法是什么
** (RuntimeError) cannot encode association :tilemap_layers from MyProject.Tilemap to JSON because the association was not loaded. Please make sure you have preloaded the associati
标签: Elixir
phoenix-frameworkex-unit
我有一个身份验证插头,我想测试我的控制器。问题是这个插头里的线路坏了
user_id = get_session(conn, :user_id)
当我使用这种方法时,它总是为零(我以前使用过DirtyHack,但我不再想这样做):
我正在使用此conn发送修补程序请求,其会话用户\u id为nil。IO的结果。将conn放入我的插头:
%Plug.Conn{adapter: {Plug.Adapters.Test.Conn, :...}, assigns: %{},
before_send:
我对长生不老药还不熟悉,目前正在学习这个过程。在一次练习中,我编写了一个乒乓球程序,从两个进程打印“乒乓”和“乒乓”。进程在接收到1或2条消息后总是死机。这是我的密码
defmodule Pingpong do
def play do
receive do
{sender, :ping} ->
IO.puts "ping"
send sender, {self, :pong}
play
{sender, :p
我试图理解捕获操作符,以及在哪里可以使用它。下面是一个工作示例:
%{name: "Daniel", dob: 2016, email: "daniel@gmail.com"}
|> Enum.filter(fn({_k, v}) -> is_binary(v) end)
|> Enum.into(%{})
返回
%{电子邮件:daniel@gmail.com,名字:“丹尼尔”}
现在我尝试在Enum.filter/2中使用capture操作符,在这里我使用map对中的第二个
我在控制器和设置中进行了类似的测试,所有的插件都可以在测试块中使用。在这里,我试图在我的模型中允许同样的事情,但我似乎无法让它工作
我有一个测试如下:
defmodule Faq.QuestionTest do
use Faq.ModelCase
alias Faq.Question
setup_all do
:ok = Ecto.Adapters.SQL.Sandbox.checkout(Repo)
Question.changeset(%Question{}
我有一个外星查询:
def sum(query) do
from aggregate in query,
select: %{
ones: fragment("coalesce(sum(ones), 0)"),
twos: fragment("coalesce(sum(twos), 0)"),
threes: fragment("coalesce(sum(threes), 0)"),
fours: fragment("coalesce(sum(fours)
所以我在Phoenix 1.3 router.ex文件中做了一些元编程魔术
我需要使用Demo.Repo从数据库中获取一些数据,同时神奇地组装一些路由。如何在router.ex中使用此选项
当我运行mix phx.routes时,我得到一个错误:
回购演示。回购未启动,请确保它是您的监管树的一部分
我是否需要以某种方式编辑application.ex文件以在不同的监控树中启动它
以下是我所拥有的:
router.ex文件
Utils模块
exto.Repo是一个GenServer,因此可以使用明
我必须过滤一个在某些情况下可以接受逗号分隔值的索引。我和埃克托一起工作,没有凤凰(和牛仔)
我的索引将支持这样的搜索
/users?ids=1,2,3&email=simple@email.com&another=something
其中电子邮件字段不允许多个参数,并且id支持多个id
这就是我尝试过的
def list_all(query_params) do
filtered_params = prepare_list_query(query_params)
上一页 1 2 ...
54 55 56 57 58 59 60 ...
下一页 最后一页 共 125 页