今天的Erlang Thursday我们继续挖掘Erlang的queue模块的Okazaki API,这次来看看queue:head/1.
queue:head/1 入参是一个队列,它的输出是这个队列的第一个元素。
今天的Erlang Thursday我们继续挖掘Erlang的queue模块的Okazaki API,这次来看看queue:head/1.
queue:head/1 入参是一个队列,它的输出是这个队列的第一个元素。
今天的Erlang Thursday我们稍微深入一下queue模块,我们讲讲来自Okazaki的API:queue:cons/2 。
queue:cons/2 有两个入参,一个是元素,一个是队列,它执行后返回一个元素加在队列头部形成的新队列。
|
|
如果我们传入一个列表给 queue:cons/2 ,我们看到它出错,表明它想要一个队列,而不会隐式地将一个列表转成一个队列。
|
|
因为队列被设置成一个双端队列,Okasaki API 也提供了一个对应的函数 queque:snoc/2 ,它将元素加在传入的队列的尾部。注意,queue:snoc/2 和 queue:cons/2 两个函数的两个入参的顺序也是相反的;queue:snoc/2 的第一个入参上一个队列,而要加在它尾部的元素做为第二个入参。
|
|
原文链接: https://www.proctor-it.com/erlang-thursday-queue-cons-2/
今天的Erlang Thursday讲的是 filelib:is_file/1.
filelib:is_file/1 入参是一个表示文件名的字符串,它根据这个文件名所指的是否是文件或目录而返回true或者false。
这个函数在你正在需要从一个配置文件读取内容并且在尝试处理前确认这个文件或目录是否存在的时候有用,以便你可以在退出前得到一个友好的错误信息而不仅是引起一个系统错误。
|
|
filelib:is_file/1 的入参也可以是一个原子,或者甚至也可以是一个嵌套的列表来表示一个文件名。
|
|
原文链接: https://www.proctor-it.com/erlang-thursday-filelib-is_file-1/
今天的Erlang Thursday讲的是 calendar:iso_week_number/1.
calendar:iso_week_number/1 接收一个日期元组做为入参,然后返回一个由年份和周数字组成的元组。年份是入参里的年份,而周数字是一个1到53的整数。
|
|
如果我们拿本周做为一个例子,我们可以看到本周是从星期一(五月四日)开始,而前一个星期天(五月三日)是属于上一个星期的。
我们看到一月一日是这一年的第一周,这没什么奇怪,而2015年的十二月三十一日是这一年的第53周。
|
|
一开始听到一年有53周我们会很惊讶,因为几乎每个人都认为一年只有52周,直到你意识到有些十二月三十一日有时候是处于一周的开始,所以造成了它处在第53周,而它仅仅是这周的一部分。
原文链接: https://www.proctor-it.com/erlang-thursday-calendar-iso_week_number-1/
今天的Erlang Thursday讲的是 calendar:is_leap_year/1.
calendar:is_leap_year/1 接收一个非负整数表示的年份,如果这个年份是闰年,则返回true,否则返回false。
|
|
有了这个Erlang核心库的内置函数,意味着你不需要编写代码或者甚至不需要查找规则来记住如何判断某个年份到底是不是闰年。
如果你传递一个负数来表示年份,Erlang将抛出一个异常,因为没有一个函数分支能匹配用负数来表示的年份。
|
|
原文链接: https://www.proctor-it.com/erlang-thursday-calendar-is_leap_year-1/
今天的Erlang Thursday讲的是 calendar:valid_date/3.
本来这次我是想讲函数 calendar:time_difference/3 ,但是当我详细看了 calendar 模块的官方文档后,发现文档里已经说这个函数被淘汰了,所以今天我讲 calendar:valid_date/3 。
今天的Erlang Thursday讲的是 calendar:date_to_gregorian_days/3.
正如我们上星期在 Erlang Thursday calendar:day_of_the_week/3 中讲到的,当我们看到一些错误消息的时候,我们看到错误来自于 calendar:date_to_gregorian_days/3。
今天的Erlang Thursday讲的是 calendar:day_of_the_week/3.
calendar:day_of_the_week/3 允许你传入年、月、日然后得到这个日子在一个星期里是第几天。
今天的Erlang Thursday讲的是 lists:delete/2 。
lists:delete/2 接收一个Erlang term作为它的第一个入参,它将把该term从第二个入参--一个列表里删除掉。
今天的Erlang Thursday讲的是 erlang:list_to_atom/1.
erlang:list_to_atom/1 的入参是一个字符串,返回的是一个Erlang的原子。