写点什么

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

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

关注

评论

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

自控学习历程系列 自控维护经验总结(10)

万里无云万里天

工厂运维

自控学习历程系列 自控设计经验总结(1)

万里无云万里天

工厂运维

自控学习历程系列 系统维护经验总结(1)

万里无云万里天

工厂运维

实用AI代理提示工程指南

qife122

机器学习 AI代理

从京东的新AI计划,看到电商与大模型的新连接

脑极体

AI

[LDAP: error code 34 - invalid DN]

刘大猫

人工智能 算法 智慧城市 智慧交通 invalid DN

自控学习历程系列 自控维护经验总结(9)

万里无云万里天

工厂运维

自控学习历程系列 人才梯队建设经验总结(1)

万里无云万里天

工厂运维

机器学习数据收集优化技术解析

qife122

机器学习 算法优化

自控学习历程系列 团队建设经验总结(1)

万里无云万里天

工厂运维

自控学习历程系列 自控维护经验总结(11)

万里无云万里天

工厂运维

Dify入门篇(3)| 配置你的第一个LLM:OpenAI/Claude/Ollama

测吧(北京)科技有限公司

人工智能 自动化测试 测试开发 dify

2025年2月安全更新深度解析:微软与Adobe关键漏洞修复指南

qife122

安全更新 微软补丁

天翼云与飞轮科技达成战略合作,共筑云数融合新生态

SelectDB

Doris SelectDB 天翼云 数据库 大数据 飞轮数据

YashanDB ALTER DATABASE语句

YashanDB

数据库

C#记录类型与集合的深度解析:从默认行为到自定义比较

qife122

C# 不可变集合

怎样利用YashanDB的存储过程优化查询性能

数据库砖家

分布式数据高效可靠检索新方法

qife122

分布式计算 信息检索

YashanDB ALTER DATABASE LINK语句

YashanDB

数据库

AI自我提升的五种技术路径

qife122

人工智能 自动化

AI公平性研究的三大挑战与解决方案

qife122

人工智能 机器学习

苹果紧急修复针对Chrome用户的零日漏洞

qife122

零日漏洞 系统更新

YashanDB ALTER FUNCTION语句

YashanDB

数据库

PromptPilot全模型兼容,数据产品能力上新!

新消费日报

运用YashanDB数据库构建智能分析平台的方法

数据库砖家

怎样进行YashanDB性能监控与优化?

数据库砖家

自控学习历程系列 信息化经验总结(1)

万里无云万里天

工厂运维

自控学习历程系列 人才梯队建设经验总结(2)

万里无云万里天

工厂运维

【免费开源】基于 STM32F4 的四轴飞行器设计与实现——从零开始到成功起飞(项目源码打包分享)

申公豹

嵌入式

基于RankSVM改进相似案例检索排序性能

qife122

机器学习 法律AI

技术文档 | Pulsar 中的消息保留、过期及积压机制解析(上)

AscentStream

消息队列 pulsar

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