在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Elixir 1.3 带来新的语言功能、API 和改进后的工具

  • 2016-07-03
  • 本文字数:940 字

    阅读完需:约 3 分钟

José Valim 最近宣布 Elixir 1.3 中弃用了必要赋值,添加了一些新的类型和存取器,提升了其 Mix 搭建工具和 ExUnit 单元测试框架。

Elixir 1.3 弃用了对需要在外部作用域进行访问的变量的赋值,如果发现有这样的情况就会立刻发出警告。这个操作的根据是给在外部作用域中的变量进行赋值,从而给内部作用域中的值添加隐式返回值。例如下面的函数定义:

复制代码
def format(message, opts) do
path =
if (file = opts[:file]) && (line = opts[:line]) do
relative = Path.relative_to_cwd(file)
message = Exception.format_file_line(relative, line) <> " " <> message
relative
end
{path, message}
end

if 块语句,除了返回 path 的值还改变了 message 中的值,这个值后面从封闭的函数中由 path 返回。在 Elixir 1.3 中这被认为是错误的操作,需要重构成如下的代码,很明确地定义 if 块返回两个值后方可使用:

复制代码
def format(message, opts) do
path =
if (file = opts[:file]) && (line = opts[:line]) do
relative = Path.relative_to_cwd(file)
message = Exception.format_file_line(relative, line) <> " " <> message
{relative, message}
end
{path, message}
end

另外一个可以方便地遍历嵌套的数据结构的语言功能是存取选择器。以下的代码中向你展示了如何遍历一个与 language 值相关联的 map,并将 name 值中所有的元素都转换为大写:

复制代码
iex> update_in myMap, [:languages, Access.all(), :name], &String.upcase/1

Elixir 的搭建工具 Mix 现在可以进行对照检查,这个功能非常实用,比如说在检测对不存在的模块和函数的调用时,或是定位所有调用了属于某个模块的函数时,或是产生依赖关系图的时候。另外,Mix 简化了其输出,因此可以更方便地发现警告。Elixir 1.3 中 Mix 的另一大改进是可以更好地进行依赖跟踪,因此编译时间会进一步缩短。

Elixir 的单元测试框架 ExUnit 利用 Mix 的对照检查功能添加了一个新标志–stale,它可以保证从上次运行之后,只有修改过的单元测试才会被执行。ExUnit 还优化了断言输出并提升了对于使用命名块的测试。

Elixir 1.3 还进行了更多改变。你可以阅读发行说明中的完整列表。

查看英文原文 Elixir 1.3 Brings New Language Features, APIs, and Improved Tooling

2016-07-03 19:0010782
用户头像

发布了 218 篇内容, 共 79.9 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

微信小游戏的运营

北京木奇移动技术有限公司

游戏开发 游戏运营 游戏外包公司

macOS Tahoe 26 让 Mac 更强大、更高效、更智能

YashanDB数据库安装与配置的详细步骤

数据库砖家

目前黑龙江对等保三级要求是什么?

等保测评

微信小程序上线后的运维

北京木奇移动技术有限公司

微信小游戏 软件外包公司 游戏外包公司

2025Java面试八股①(含121道面试题和答案)

王中阳Go

Java 面试

深入了解YashanDB数据库的功能与模块

数据库砖家

怎样做YashanDB数据一致性校验,确保业务准确?

数据库砖家

如何应对YashanDB数据库中的数据一致性挑战

数据库砖家

如何优化YashanDB数据库以提升数据处理速度?

数据库砖家

dbops 助力 GreatSQL MGR架构安装部署

GreatSQL

OCR 识别质量如何影响 RAG 系统的性能?有何解决办法?

Baihai IDP

AI OCR LLM Baihai IDP 检索增强生成

快手12篇论文入选CVPR 2025!

快手技术

人工智能 大模型 快手 学术成果

视觉与图像识别自动化测试 | 图像识别

测试人

人工智能

如何通过YashanDB丰富企业的客户数据

数据库砖家

多格式文件在线预览,提升移动设备文件处理效率与体验

HarmonyOS SDK

harmoyos

如何实现YashanDB数据库的负载均衡

数据库砖家

微信小游戏开发的技术框架

北京木奇移动技术有限公司

软件外包公司 游戏外包公司 游戏开发公司

使用YashanDB时如何进行有效的查询优化

数据库砖家

Unity开发游戏的技术框架

北京木奇移动技术有限公司

游戏开发 软件外包公司 游戏外包

如何通过YashanDB实施弹性计算环境的数据管理

数据库砖家

使用YashanDB进行实时数据分析的完整流程

数据库砖家

怎样做YashanDB支持高性能事务处理

数据库砖家

构建基于YashanDB数据库的分布式事务管理系统技术分析

数据库砖家

哈尔滨企业如何做信息安全等级保护工作?

等保测评

深入研究:亚马逊amazon商品详情API接口Python攻略

tbapi

亚马逊API 亚马逊商品详情API 亚马逊商品列表接口 亚马逊数据采集

狄耐克脑电波交互事业部走访四大实验室,共探脑电波交互技术新局

新消费日报

如何在YashanDB中管理用户权限与角色

数据库砖家

YashanDB数据库自动化测试方案

数据库砖家

真实场景文档理解:字节发布的WildDoc基准数据集向OCR提出了什么挑战?

合合技术团队

算法 人工智能’ #大数据

深入研究:亚马逊amazon商品列表API接口Python攻略

tbapi

亚马逊API 亚马逊商品列表接口 亚马逊商品详情接口 亚马逊数据采集

Elixir 1.3带来新的语言功能、API和改进后的工具_后端_Sergio De Simone_InfoQ精选文章