Iex中默认启用千位数分组(例如100_000
)。如果是,那将非常有用。
否则我们如何在IO.puts
中指定它?
答案 0 :(得分:5)
根据Inspect.Opts
所述,没有启用数字分组的原生选项。
但是,如果将function getDB() {
$dbConnection = new pdo('mysql:unix_socket=/cloudsql/<your-project-id>:<your-instance-name>;dbname=<database-name>',
'root', // username
'' // password
);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbConnection;
}
放在本地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
才能显示数字分组。根据{{3}}的文档,默认情况下应启用pretty inspect。
启动true
时,您会看到有关重新定义iex
和Inspect.Float
的2条警告,但之后应继续正常工作:
Inspect.Integer
它还支持不同iex> 100_000
100_000
iex> 100_000.1
100_000.1
选项(:base
,:binary
,:decimal
和:octal
)的分组:
:hex