写点什么

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

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

关注

评论

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

☕️【Java 技术之旅】带你看透Lambda表达式的底层

码界西柚

Java Lambda 底层原理 5月日更 行为参数化

可视化突破海绵城市发展困境,智慧城市从“一张图”开始

一只数据鲸鱼

数据可视化 智慧城市 智慧水务 三维可视化 海绵城市

突击 22 天面进腾讯,给到 32K*14 薪!全靠这份阿里面试参考指南了

Java 程序员 架构 面试 计算机

一周信创舆情观察(5.17~5.23)

统小信uos

Flink的批数据SQL

五分钟学大数据

flink 5月日更

电子产品PCB电路板散热的方法

不脱发的程序猿

嵌入式 PCB 电路板散热 电子电路 电路板

国家工业信息安全发展研究中心与华为联合发布《数据安全白皮书》

DT极客

【大咖直播】Elastic 可观测性实战工作坊

腾讯云大数据

elastic

阿里开源:历年亿级活动高并发系统设计场景总结

Java架构师迁哥

ThingJS粒子特效一键实现雨雪效果

ThingJS数字孪生引擎

可视化 场景应用 3D可视化 数字孪生

吐血总结 | Java并发编程 72 变

Java架构师迁哥

爱了! Alibaba技术官甩出的“阿里内部Java成长笔记”,技术人成长的标杆!

Java架构之路

Java 程序员 架构 面试 编程语言

哈工大与华为终端有限公司签署首个HarmonyOS高校协同育人合作协议

科技汇

【多线程与高并发】从一则招聘信息进入多线程的世界

牧小农

Java 多线程与高并发

视频门禁的优点及应用场景

anyRTC开发者

音视频 WebRTC RTC sdk

大厂面试内幕:阿里内部整理出的5000页Java面试复盘指南,起飞

Java架构追梦

Java 架构 面试

DWF低代码开发技术及其在数字化运营和运维平台建设中的应用

云智慧AIOps社区

低代码 智能运维

一个月吃透这份阿里高级专家的《Java500道面试手册》成功拿下了腾讯offer!

Java架构之路

Java 程序员 架构 面试 编程语言

扫盲篇-什么是分布式任务调度

敏捷调度TASKCTL

大数据 分布式 分布式锁 分布式任务调度 zookeeper分布式锁

Alibaba面试官:“这该死的程序员,技术竟如此深厚!”

Java架构之路

Java 程序员 架构 面试 编程语言

Logo设计软件 Tech Support

凌天一击

网络攻防学习笔记 Day27

穿过生命散发芬芳

5月日更 网络攻防

终于看到阿里大牛能把springboot讲的如此出神入化

Java 程序员 架构 计算机

Flume自定义拦截器

大数据技术指南

大数据 5月日更

CCF C³-04@百度丨“AI+开源”的昨天今天和明天

百度大脑

百度 AI

NUCLEO-L432KC实现UART1、UART2双串口数据通信(STM32L432KC)

不脱发的程序猿

嵌入式 stm32 单片机 NUCLEO-L432KC 串口通信

学到了,用138个案例讲明白了Spring全家桶+Docker+MQ

Java架构师迁哥

阿里P7简历上都有哪些可以拿得出手的项目?

Java架构师迁哥

助力秋招第三弹:Java集合框架体系详细梳理

北游学Java

Java 面试 框架 秋招

请警惕 ES 的三大坑

悟空聊架构

elasticsearch 架构 分布式 微服务 ES

GitHub上标星75k+超牛的《Java面试突击版》,分享PDF离线版

Java 程序员 架构 面试

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