Elixir 1.8 发布,函数式编程语言

栏目: 软件资讯 · 发布时间: 7年前

内容简介:Elixir 1.8 发布,新版主要是基础等级上的提升,包括缩短了编译时间,加快常见模式,增加了系统内省特性等。 Elixir 是一种函数式编程语言,建立在Erlang虚拟机之上。它是一种动态语言,灵活的语法与宏支持,利用E...

Elixir 1.8 发布,新版主要是基础等级上的提升,包括缩短了编译时间,加快常见模式,增加了系统内省特性等。

Elixir 是一种函数式编程语言,建立在Erlang虚拟机之上。它是一种动态语言,灵活的语法与宏支持,利用Erlang的能力来构建并发、分布式、容错应用程序与热代码升级。

自定义结构检查

新版提供 Inspect 协议的可派生实现,这使得检查数据结构中的数据无论何时都很方便。举个例子,想象你现在有一个包含安全隐私敏感数据的用户结构:

defmodule User do
  defstruct [:id, :name, :age, :email, :encrypted_password]
end

默认情况下,如果你检查用户通过 inspect(user),它将包含所有字段。这能导致 :email:encrypted_password 出现在日志和错误报告等地方。你可以总是为这种情况定义 Inspect 协议的自定义实现,但 Elixir v1.8 通过允许派生 Inspect 协议,简单化了这情况:

defmodule User do
  @derive {Inspect, only: [:id, :name, :age]}
  defstruct [:id, :name, :age, :email, :encrypted_password]
end

于是现在所有用户结构输出的将是剩余字段:

#User<id: 1, name: "Jane", age: 33, ...>

你也可以通过 @derive {Inspect, except: [...]} 仅排除部分字段,保留其他所有字段。

时区数据库的支持

在 Elixir 1.3 版本,Elixir 增加了4种类型,被称为日历类型,有关日期和时间: Time, Date, NaiveDateTime (无时区), and DateTime (有时区)。后面版本为日历类型添加了许多增强功能,但 DateTime 模块因为 Elixir 没有提供时间数据库 API 的关系,发展缓慢。

Elixir v1.8 现在定义了 Calendar.TimeZoneDatabase 行为,允许开发者引入时区数据库。通过对时区行为的定义,Elixir 现在扩展了 DateTime API,添加如 DateTime.shift_zone/3 的函数。默认情况下, Elixir 携带一个只能处理 UTC 的 Calendar.UTCOnlyTimeZoneDatabase 时区数据库。

其他日历相关的改进包括 Date.day_of_year/1, Date.quarter_of_year/1, Date.year_of_era/1, and Date.day_of_era/1 的添加。

其它更新

此外的更新,包括更快的编译速度,及其他性能方面的改进;通过 $callers 改进 instrumentation 和 ownership等。

详情请看 更新说明

下载地址:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

未来简史

未来简史

[以色列] 尤瓦尔·赫拉利 / 林俊宏 / 中信出版集团 / 2017-2 / 68.00元

进入21世纪后,曾经长期威胁人类生存、发展的瘟疫、饥荒和战争已经被攻克,智人面临着新的待办议题:永生不老、幸福快乐和成为具有“神性”的人类。在解决这些新问题的过程中,科学技术的发展将颠覆我们很多当下认为无需佐证的“常识”,比如人文主义所推崇的自由意志将面临严峻挑战,机器将会代替人类做出更明智的选择。 更重要的,当以大数据、人工智能为代表的科学技术发展的日益成熟,人类将面临着从进化到智人以来z......一起来看看 《未来简史》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具