生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

关注

评论

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

WorkPlus移动应用平台,完美的移动化办公体验

WorkPlus

WorkPlus即时通讯平台,让沟通变得简单高效

WorkPlus

毫末贺翔:DriveGPT让通用感知实现“万物识别”、通用认知具备“世界知识”

Geek_2d6073

macos big sur 软件icons图标大全(新增至2719枚大苏尔风格图标)

Rose

macOS Big Sur icons图标

软件测试学习笔记丨接口测试面试题

测试人

软件测试 面试题 测试开发

快速掌握AI测试开发技能,获得更好的职业机会和晋升空间

霍格沃兹测试开发学社

客户说|从4小时到15分钟,一次分布式数据库的丝滑体验

阿里云瑶池数据库

数据库 云计算 阿里云 云原生 polarDB

10 个解放双手的 IDEA插件,少些冤枉代码(第三弹)

程序员小富

IDEA 插件

Touch bar pet for Mac(在macbook上养一只宠物)

Rose

Mac软件 电子宠物 touchbar 宠物桌面

大咖公开课 | 探索AI的边界:如何精准地测试人工智能

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

测试

汽车软件市场迅猛扩张,Perforce Helix Core与Helix IPLM助力汽车软件开发的版本控制及IP生命周期管理

龙智—DevSecOps解决方案

汽车 汽车软件

pd18虚拟机如何安装?哪里有Parallels 工具箱?

Rose

PD18虚拟机破解 Parallels 工具箱 Mac虚拟机安装 Parallels Desktop破解

WorkPlus Meet提供高效、安全视频会议解决方案

WorkPlus

如何通过相对规模来估算用户故事?

敏捷开发

Scrum 敏捷 极限编程 用户故事 敏捷团队

『Java 语法基础』面向对象有哪些特性

EquatorCoco

Java JVM 语法 开发语言

AutoCAD 2019(cad2019)汉化激活版下载附cad产品密钥

Rose

cad2019 AutoCAD 2019

Java面试必考题之线程的生命周期,结合源码,透彻讲解!

不在线第一只蜗牛

Java 面试 生命周期 开发语言

亮点功能:流水线编辑支持并行了!

都广科技

DevOps

软件测试学习笔记丨Allure2测试用例描述相关用法(测试报告类别划分、名字展示等)

测试人

软件测试

人工智能测试开发训练营,快速掌握AI测试,更好职业机会晋升空间

测试人

软件测试 测试开发

WorkPlus助力企业构建高效内部通讯与协作平台

WorkPlus

WorkPlus Meet提供高度安全的私有化会议解决方案,保护企业隐私

WorkPlus

人工智能测试开发训练营 带你快速掌握AI测试开发技能,获得更好的职业机会和晋升空间

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

测试

Digital Realty 在日本 NRT 园区设立第二座数据中心

财见

WorkPlus即时通讯平台,让沟通变得简单高效

WorkPlus

全球视角, 本土行动 —— 本地化商品管理之道

第七在线

鸿蒙的跨端技术实践方案

Geek_2305a8

Maple 2024 mac下载(含maple注册文件及破解工具)兼容m芯片

Rose

软件下载 Maple 2024 Maple数学软件 Maple 2024 mac破解

Pandora飙升背后的ERC404 目前适合布局吗

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

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