写点什么

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:0010367
用户头像

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

关注

评论

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

网站运营者必知!香港虚拟主机的五大优势,简直不可错过!

一只扑棱蛾子

AI大模型百舸争流背后,核心计算引擎是竞争关键

新消费日报

SD-WAN:实现大型企业网络架构快速升级拓展

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

开发者选择与实施低代码平台的终极指南

NocoBase

开发者工具 低代码 低代码开发 低代码开发平台 无代码平台

CryptoPunks NFT 概览与数据分析

Footprint Analytics

NFT

SD-WAN解决方案:企业异地组网挑战之视频会议

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

通过API接口实现自动化数据同步

Noah

技术革新助力业务飞跃:聚道云软件连接器实现财务与业务高效协同

聚道云软件连接器

案例分享

Windows、Linux 和 Mac:操作系统之间的比较

小魏写代码

Montoux 发布首款适用于精算师的生成式 AI Copilot

财见

Vue3构建的可视化低代码平台

互联网工科生

Vue 低代码 系统开发

如何使用 NFTScan NFT API 在 Mantle 网络上开发 Web3 应用

NFT Research

NFT NFT\ NFTScan

2024「ToB头条行业大会」正式启动!

ToB行业头条

tob 大会 北京 线下大会

AI视频生成工具Sora横空出世!一文带你了解Sora:简介|主要功能|使用场景|平替工具等!

彭宏豪95

AI大模型 openai AIGC AI绘画 sora

亿级月活游戏《迷你世界》全栈容器化实践分享

华为云开发者联盟

华为云 迷你世界 华为云开发者联盟 华为云CCE 后端全站容器化

DevOps VS 敏捷的区别是什么?

华为云PaaS服务小智

云计算 软件开发 云服务

限免福利!AI领航开工季 百度安全助力企业三重BUFF叠加

百度安全

DevOps的3大核心基础架构

华为云PaaS服务小智

云计算 软件开发 云服务 华为云

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