标签: elixir

在Elixir中,如何使用字符串插值格式化数字

我想打印出一个字符串

IO.puts("Count: #{my_count}")
Run Code Online (Sandbox Code Playgroud)

但是我希望输出中的前导零如

Count: 006
Run Code Online (Sandbox Code Playgroud)

我该怎么做,文档在哪里?

elixir

27
推荐指数
3
解决办法
1万
查看次数

我可以在Elixir中连接字符串并使用管道运算符吗?

在Elixir中,您可以使用<>运算符连接字符串,例如"Hello" <> " " <> "World".

您还可以使用管道运算符|>将函数链接在一起.

我正在尝试编写Elixir代码来格式化在线游戏的货币.

def format_price(price) do
  price/10000
  |> Float.round(2)
  |> to_string
  |> <> "g"
end
Run Code Online (Sandbox Code Playgroud)

以上结果导致语法错误.我是否忽略了可以连接字符串的基本功能?我知道我可以自己定义一个,但如果我可以避免它,那似乎在我的代码中创建了不必要的混乱.

我意识到我可以通过简单地将方法链接在一起来完成同样的事情,to_string(Float.round(price/10000, 2)) <> "g"但是这种语法并不像阅读那么好,并且如果我想在以后添加步骤,那么将来扩展该方法会更加困难. .

Elixir是否有方法使用管道运算符连接文本,或者如果没有自己定义方法,这是不可能的?

string-concatenation elixir

27
推荐指数
2
解决办法
5483
查看次数

Elixir - 使用它而不是普通的erlang会有性能损失吗?

Elixir似乎很酷,但我想知道它的缺点..如果有的话......

在erlang上选择它时还有其他潜在的缺点吗?

erlang elixir

26
推荐指数
2
解决办法
1656
查看次数

在本地使用hex.pm包

是否可以将本地混合项目用作十六进制依赖项?

使用Bundler我可以添加如下行:

gem 'action_subscriber', :path => "../action_subscriber"
Run Code Online (Sandbox Code Playgroud)

所以我可以在发布新版本之前尝试使用gem.这是否可以使用十六进制依赖关系管理工具?

elixir

26
推荐指数
1
解决办法
4439
查看次数

在Phoenix/Ecto中混合范围和关联

在Rails中,如果我有以下设置:

class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :post

  def self.approved
    where(approved: true)
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我可以做这样的事情:

post = Post.find(100)
comments = post.comments.approved
Run Code Online (Sandbox Code Playgroud)

快速获得给定的所有批准的评论Post.

我怎样才能在Ecto中做类似的事情?

defmodule MyApp.Post do
  use Ecto.Model

  schema "posts" do
    #columns omitted
    has_many :comments, MyApp.Comment
  end
end

defmodule MyApp.Comment do
  use Ecto.Model

  schema "comments" do
    #columns omitted
    belongs_to :post, MyApp.Post
  end
end
Run Code Online (Sandbox Code Playgroud)

postcomments预装的:

post = MyApp.Post
       |> MyApp.Repo.get(100)
       |> MyApp.Repo.preload(:comments)
Run Code Online (Sandbox Code Playgroud)

我甚至不确定从哪个approved范围开始MyApp.Comment.

elixir ecto phoenix-framework

26
推荐指数
2
解决办法
2669
查看次数

Elixir中字符串比较的双等于和三等于的差异

我正在读一本关于Elixir的书:介绍Elixir.

在字符串比较它说:

Elixir提供了两种比较字符串相等性=====运算符的选项.该==操作通常是最简单的,虽然其他产生相同的结果.

如果他们的意思相同,那么有两个运营商的目的是什么?

elixir

26
推荐指数
1
解决办法
3311
查看次数

如何从Phoenix Controller向频道广播消息?

有没有办法从该频道外部向频道广播消息?

也许是这样的Channel.broadcast topic, event, data

我在这里看到了类似的东西但是Phoenix.Channel.broadcast/3(截至今天)的最终版本采用了一个隐含通道和主题的套接字.

channel elixir phoenix-framework

26
推荐指数
1
解决办法
8425
查看次数

Elixir将struct转换为map

我正在尝试将结构转换为地图,以便能够清除所有的nil值

我目前正在使用此代码

  case Nadia.get_updates  do
    {:ok, results} ->
      Map.from_struct(results)
      |> Enum.filter(fn {_, v} -> v != nil end)
      |> Enum.into(%{})
Run Code Online (Sandbox Code Playgroud)

注意:Nadia.get_updates返回以下结构:https://hexdocs.pm/nadia/Nadia.Model.Update.html#t:t / 0

然而,我总是收到以下错误:Map.from_struct/1中没有匹配的函数子句

struct dictionary elixir telegram-bot

26
推荐指数
3
解决办法
1万
查看次数

为什么在Ecto查询中需要引脚操作符?

在Elixir中,引脚运算符用于防止变量重新绑定.但是,对于像Ecto这样的查询

from u in User, where: u.username == ^username
Run Code Online (Sandbox Code Playgroud)

的作者编程凤凰状态(第7章),其

请记住,^运算符(称为pin运算符)意味着我们希望保持^ username相同.

但这听起来不对,因为显然,查询中的比较不会导致任何重新绑定变量.

这本书的作者(JoséValim与谁合着)是错误的吗?Ecto中的引脚运算符只是查询Ecto DSL的构造而不是通常的Elixir引脚运算符吗?或者username,在宏扩展后,查询是否真的有机会重新绑定?

elixir ecto

26
推荐指数
2
解决办法
1536
查看次数

有没有办法确保在DISTINCT之后发生WHERE子句?

想象一下comments,您的数据库中有一个表.

注释表有列,id,text,show,comment_id_no.

如果用户输入注释,它会在数据库中插入一行

| id |  comment_id_no | text | show | inserted_at |
| -- | -------------- | ---- | ---- | ----------- |
| 1  | 1              | hi   | true | 1/1/2000    |
Run Code Online (Sandbox Code Playgroud)

如果用户想要更新该注释,则会在数据库中插入新行

| id |  comment_id_no | text | show | inserted_at |
| -- | -------------- | ---- | ---- | ----------- |
| 1  | 1              | hi   | true | 1/1/2000    | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql distinct elixir where

25
推荐指数
2
解决办法
1409
查看次数