Elixir代码格式化器
指导
Elixir代码格式化器
粘贴您的 Elixir 源代码,即可在浏览器中立即获得整洁的输出。 mix format样式输出,标准化缩进,规范化运算符周围的空格,排序块,并在代码进入之前发现表面语法问题。 alias / import / require / use 块,以及在提交前发现表面语法问题。 iex。所有操作均在客户端进行,因此您的代码永远不会离开您的机器。
如何使用
- 将 Elixir 代码粘贴到输入框中,或将文件拖放到上传器中,或点击
.ex/.exs最大行长度 尝试一个示例. - 可选地调整 (默认为 98,与 )一致,以标记过长的行。
mix format对 alias / import / require / use - 切换 如果希望连续的块按字母顺序排列。 格式化输出会实时显示。您可以复制它,或将其下载为
- mix format 风格的缩进
formatted.ex.
特征
- —— 2 个空格缩进,跟踪 ↔
do/fn重缩进。end且else/rescue/catch/after—— 标准化 - 操作符间距 ,以及相关函数。
=,==,|>,->,<-,::,++,<>映射与结构体前缀 - —— 在不破坏模运算的情况下收紧 。
%{...}且%MyStruct{...}位字符串括号 - —— 保留 ,不添加多余的空格。
<<...>>—— 对连续的块进行字母排序(关键字 + 缩进必须匹配)。 - 如果希望连续的块按字母顺序排列。 —— 捕获不匹配的括号、方括号、大括号、位字符串、不匹配以及未终止的这里文档。
- 语法验证 行长度警告
do/end—— 标记超出您配置的最大长度(40–200)的行。 - 这里文档、sigils、字符列表 —— 保留字符串内部和
- 的原始内容。 拖放上传
~r/.../,~s(...),~S"""..."""—— 可直接格式化任何文件。 - —— 无需上传文件;页面加载后即可离线使用。 什么是
.ex/.exs以及为什么 Elixir 需要它? - 100% 客户端 是 Elixir 的官方代码格式化工具,自 Elixir 1.6 版本引入。它将源代码解析为 AST,并使用单一、确定性的样式重新格式化输出。由于每个 Elixir 项目都遵循相同的规范,团队不再为空白字符争论,代码审查关注逻辑而非布局,且在不同编辑器和操作系统之间差异保持干净。
常问问题
-
管道操作符
mix format实际上做了什么?mix format管道操作符将左侧的值作为其右侧函数的第一个参数传递。因此, -
。管道操作从上到下按操作顺序读取,这就是为什么惯用的 Elixir 代码会将每个
|>单独放在一行,并且缩进两个空格,以表示其从被管道的值中获取。为什么 Elixir 变量看起来是不可变的,即使它们被重新赋值? Elixir 变量是重新绑定,而不是突变。 跟随
data |> transform() |> save()等同于save(transform(data))创建名称|>的新绑定;原始值 -
仍保留在内存中,直到被垃圾回收。在模式匹配中,
是匹配操作符,而不是赋值,因此
x = 1同时解构并绑定。x = 2块和关键字简写之间的区别是什么?x是多行块形式,其中体可以包含任意数量的表达式。1是单表达式体的关键字简写形式,并被解析为关键字列表中的 2 元组。=两者生成相同的字节码;对于单行表达式,推荐使用简写形式,对于多语句体,则推荐使用块形式。{:ok, value} = result为什么 Elixir 中字符列表和二进制数据不同? -
双引号字符串是 UTF-8 二进制——字节序列。单引号字符列表是 Unicode 代码点的链表,源自 Erlang,其中字符串传统上是整数列表。大多数 Elixir API(Phoenix、Ecto、Plug)使用二进制数据;字符列表主要出现在 Erlang 互操作边界(
do,等等)中,底层库期望列表。do:在此处粘贴您的 Elixir 代码...def foo do ... endElixir 代码格式化器 1def foo, do: exprElixir 代码格式化器{:do, expr}在此处粘贴您的 Elixir 源代码,即可在浏览器中立即获得整洁的 mix format 风格输出。标准化缩进,规范化运算符周围的空格, -
为什么Elixir中charlists和二进制数据不同?
双引号字符串是一个UTF-8二进制数据——一串字节。单引号的字符列表是一个Unicode码点的链表,源自Erlang,其中字符串传统上是整数列表。大多数Elixir API(Phoenix、Ecto、Plug)都使用二进制数据;字符列表主要出现在Erlang互操作边界(
:inets,:gen_tcp,等等)中,因为底层库期望的是列表。
