- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请问 Iex 中是否有默认启用千位分组(例如 100_000
)的开关。如果是的话,那将非常有帮助。
否则我们如何在IO.puts
中指定它?
最佳答案
没有 native 选项可以启用数字分组,如您根据Inspect.Opts
所述。 .
但是,如果将 IEx
与 Integer
和 Float
一起使用时,以下内容应该可以覆盖检查的行为(如果将其放置在本地) ~/.iex.exs
文件:
defmodule PrettyNumericInspect do
def group(value, :binary, true),
do: value |> group_by(8)
def group(value, :decimal, true),
do: value |> group_by(3)
def group(value, :hex, true),
do: value |> group_by(2)
def group(value, :octal, true),
do: value |> group_by(4)
def group(value, _, _),
do: value
defp group_by(value, n) when byte_size(value) > n do
size = byte_size(value)
case size |> rem(n) do
0 ->
(for << << g :: binary-size(n) >> <- value >>,
into: [],
do: g)
|> Enum.join("_")
r ->
{head, tail} = value |> String.split_at(r)
[head, group_by(tail, n)] |> Enum.join("_")
end
end
defp group_by(value, _),
do: value
end
defimpl Inspect, for: Float do
def inspect(thing, %Inspect.Opts{pretty: pretty}) do
[head, tail] = IO.iodata_to_binary(:io_lib_format.fwrite_g(thing))
|> String.split(".", parts: 2)
[PrettyNumericInspect.group(head, :decimal, pretty), tail]
|> Enum.join(".")
end
end
defimpl Inspect, for: Integer do
def inspect(thing, %Inspect.Opts{base: base, pretty: pretty}) do
Integer.to_string(thing, base_to_value(base))
|> PrettyNumericInspect.group(base, pretty)
|> prepend_prefix(base)
end
defp base_to_value(base) do
case base do
:binary -> 2
:decimal -> 10
:octal -> 8
:hex -> 16
end
end
defp prepend_prefix(value, :decimal), do: value
defp prepend_prefix(value, base) do
prefix = case base do
:binary -> "0b"
:octal -> "0o"
:hex -> "0x"
end
prefix <> value
end
end
Inspect.Opts
选项 :pretty
必须设置为 true
才能显示数字分组。根据 IEx.configure/1
的文档默认情况下应该启用漂亮检查。
启动 iex
时,您将看到 2 个有关重新定义 Inspect.Float
和 Inspect.Integer
的警告,但它应该继续像下面那样工作之后正常:
iex> 100_000
100_000
iex> 100_000.1
100_000.1
它还支持不同 :base
选项的分组(:binary
、:decimal
、:octal
和 :hex
):
iex> inspect 0b11111111_11111111, base: :binary, pretty: true
"0b11111111_11111111"
iex> inspect 999_999, base: :decimal, pretty: true
"999_999"
iex> inspect 0o7777_7777, base: :octal, pretty: true
"0o7777_7777"
iex> inspect 0xFF_FF, base: :hex, pretty: true
"0xFF_FF"
关于formatting - Iex 中是否有默认启用千位分组(100_000)的开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064900/
我正在研究 Dave Thomas 的 Programming Elixir,我正在尝试列表章节中的一些示例。 当我学习一门语言时,我更喜欢通过运行 来尽可能地保持基础。 .在这种情况下,我正在运
当我使用 IEx 并犯了诸如附加括号或“之类的拼写错误时,大多数时候我都会收到语法错误。但也有这样的情况: iex(3)> Enum.each '12345', &(IO.puts(&1"))
我是 Elixir 的新手。我希望它类似于 Python 或 R,可以轻松下载模块并保持最新。 我已经创建了一个使用 HTTPoison 的混合项目,但我真的只是想从解释器中试用 HTTPoison。
我想使用 IEx.pry 在我的 elixir 代码中一步一步地进行,比如 ruby 中的 byebug 或 Java 中的调试点。我尝试查看此处的文档:https://github.com/el
在 irb和许多其他交互式 shell 一样,我可以按 Ctrl+L 来清除屏幕。 Elixir 中的等效项是什么 iex ? 最佳答案 你在 Mac 上吗?你可以试试 Command+K。这通常对我
在文件 ~/.iex.exs 中,我有一个定义了多个函数的模块,我想从 iex shell 调用这些函数,而不需要使用模块名称前缀。 使用 import SomeModule 不起作用,我收到错误:m
通过 IEx(Elixir 的 REPL),我希望能够保存我的命令历史记录。 例如: 我可以打开一个新的 IEx session 并执行命令。执行命令后,我可以按向上箭头并预先填充我的最后一个命令。关
我检查了 h 和 h(IEx),但没有得出任何结论。 我确定我可以退出命令提示符并运行“混合格式”,但我想知道我是否遗漏了什么。是否有任何类似于 iex 的 recompile/0 或 r/1 的命令
我检查了 h 和 h(IEx),但没有得出任何结论。 我确定我可以退出命令提示符并运行“混合格式”,但我想知道我是否遗漏了什么。是否有任何类似于 iex 的 recompile/0 或 r/1 的命令
在 erlang shell 中,您可以使用 rp 避免麻烦的术语截断。 .在 Elixir 中最惯用的方法是什么? 最佳答案 我相信等价的会通过 limit: :infinity至 Kernel.i
是否可以为 iex 添加颜色和其他效果?迅速的?是否iex有一个资源文件(比如 .irbrc 用于 Ruby 的 irb )?是否有允许快速定制的定制 API(如 Ruby 的 IRB.conf )?
我经常使用 HTTPoison 编写 HTTP 程序在 Elixir 中。 当然,如果我使用 混合用于创建新项目并修改 mix.exs 以获取 HTTPoison 的依赖项,mix deps.get可
遵循 this question 中的建议关于如何使用当前项目的依赖项加载 iex,我能够以非常高效的方式使用 phoenix 框架依赖项。然而,必须为每件事情提供 Phoenix 项目的命名空间有点
请问 Iex 中是否有默认启用千位分组(例如 100_000)的开关。如果是的话,那将非常有帮助。 否则我们如何在IO.puts中指定它? 最佳答案 没有 native 选项可以启用数字分组,如您根据
我已经构建了一个小型聊天应用程序,如下所示: https://github.com/chrismccord/phoenix_chat_example/blob/master/web/channels/
抱歉,如果这是一个简单的问题,但我对 elixir 很陌生,而且我没有 erlang 背景。 我正在尝试运行以下代码,但出现错误。 ~ 猫 foo.ex defmodule Math do def
我正在尝试通过 jupyter notebook 中的 pandas_datareader 获取一些股票数据。我正在使用谷歌,但这不再有效,所以我使用 iex。 import pandas_datar
使用 iex 时我的 Phoenix 应用程序中的控制台,如下所示: iex -S mix phx.server 我好像打不通System函数,例如 System.stop(1)或 System.ha
我有一个创建数据库查询的工作人员,如下所示: defmodule MyApp.Periodically do use GenServer def start_link do GenSe
我不知道如何在 IEx 中查看我当前的上下文。我想查看在 shell 中定义的所有变量的列表。这可能吗?谢谢。 最佳答案 您可以使用 binding() 获取当前变量及其值。 例如 iex(1)> a
我是一名优秀的程序员,十分优秀!