`
litaocheng
  • 浏览: 333929 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

erlang的强数据类型

阅读更多
在mailist中,一位朋友表示疑问,为什么下面的语句提示出错?erlang的运行时数据绑定有什么特殊规则?
>{ok, File} = file:open("test.file", [write, raw, {delayed_write, math:pow(10, 3), 1000)]).
** exception error: no match of right hand side value {error,badarg}


提示badarg,参数错误。
其实不是运行时绑定有什么问题,而是math:pow/2返回的数据类型为float, 而file:open/2中的tuple的第二个element需要类型为integer,因此就出现了badarg错误。
修正办法:可以通过trunc/或者round/1将float转化为integer(trunc是将小数部分舍弃,而round是四舍五入,具体参看erlang模块), 当然更聪明的办法就是去掉math:pow/2这样的测试代码。

顺便说一下上例中file:open/2的{delayed_write, Size, Delay}的涵义,这是指要求将数据延迟写入文件,只有当数据达到Size字节,或者数据已经存活了Delay毫秒。具体参看file module.

在erlang中是没有c++中类似的隐式类型转换,这样做的目的是为了使语言简单,便于调试开发。
erlang是如此透彻,坚定。你只要掌握有限的几种数据类型,掌握功能强大的模式匹配,明白变量的一次数值绑定,勤写代码,勤看文档。
不要多久,你也可以写出简单,高校,易读的erlang应用。
分享到:
评论
1 楼 sgqt 2009-11-19  
简单,高校,易读,写错字了吧

相关推荐

    erlang api 最新资源

    Erlang中只有 8种基本的数据类型: integer float atom reference fun port pid bitstring 同时提供 2种复合结构: tuple list 这就是 Erlang的所有数据类型 2 模式匹配 在 Erlang的函数中 某些语法中 我们可以...

    Erlang趣学指南

    (494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。

    Erlang语言连接工具ErlPort.zip

    ErlPort 是一个Erlang 库,用来帮助连接 Erlang 与其他编程语言。...Erlang 库使用 Erlang 端口协议 来简化Erlang 语言和 Erlang 外部术语格式 的连接,设置良好的数据类型映射。   标签:ErlPort

    介绍 Erlang binary 和 bit string 数据类型的经典文章

    在Erlang里面,Binary支持强大的模式匹配,这为编写网络通讯程序提供了便利。但是关于 bit syntax 语法来说,理解还是不太容易。 借此文档,希望给大家有帮助。

    kvc:KVC-Erlang数据结构的键值编码

    支持以下常见的Erlang数据结构: list() dict() gb_trees() proplist() {struct, proplist()} (通常在mochijson2中使用) {proplist()} ( ) map() Erlang 17+ 密钥仅允许使用以下数据类型,并且如果发生任何类型...

    java版商城源码-hello-erlang:Erlang的笔记和例子

    java版商城源码你好二郎! 这些是我在学习过程中关于...的数学运算符将为您透明处理的唯一数据类型。 要进行整数到整数的除法,请使用div ,要使用模运算符,请使用rem 。 5 / 2. -> 2.5 5 div 2 -> 2 要表示以 10 为基

    gleam_decode:将Erlang或Elixir数据转换为Gleam数据

    decode允许您构建Decoder ,然后可以将其用于将数据从Erlang或Elixir转换为类型安全的Gleam数据! 入门 如果您只关心从Elixir或Erlang之一解码数据,请跳至相关部分,然后阅读Gleam示例。 长生不老药 假设您要在...

    Go/Python/Erlang编程语言对比分析及示例代码

    Go的语法、数据类型、控制流等继承于C,Go的包、面对对象等思想来源于Pascal分支,而Go最大的语言特色,基于管道通信的协程并发模型,则借鉴于CSP分支。 Go/Python/Erlang语言特性对比  如《编程语言与范式》一文...

    streams:懒惰的评估,Erlang中的流等

    Erlang中的函数式编程,包括流,惰性求值和依赖类型。 在和的演示。 EFBA.pdf和CBSF.pdf中的幻灯片。 关于不同方法的注意事项 lazy.erl惰性示例的权威版本,其中引用存储在命名的ETS表中。 引用是按顺序分配的,键0...

    emlisp:将Lisp嵌入到Erlang生态系统中的实验

    数据类型:整数,字符串,符号emlisp> 1 1 emlisp> " test " " test " emlisp> 'a a erlang的接口是(Mod:Fun arg1 arg2 ...) emlisp> (erlang:+ 2 2 ) 4 emlisp> (lists:seq 1 5 ) ( 1 2 3 4 5 ) emlisp> erlang:...

    EdpBench:Erlang 分布式协议 (EDP) 基准

    它使用网络上的和包来创建 Java 节点,该节点知道 Erlang 端口映射器( )、数据类型及其分布式协议。基准为了运行这个基准测试,你需要在你的机器上安装 Erlang、Java 和 Gnu Make。 将此 repo 克隆到您的机器中将...

    erl-rstar:R * -tree空间数据结构的Erlang实现

    该应用程序提供了R * -tree数据结构的纯Erlang实现。 R *树结构特别适合索引维度较低的多维数据。 因此,它是地理空间数据的常用数据结构。 除了有效地支持窗口查询外,它还可以快速找到一个点的最近邻居。 此实现...

    hep-erlang:总是

    肝儿郎HEP(荷马封装协议)的 Erlang 实现。 警告这个项目目前在的孵化器中,所以这个软件的工作方式可能会有很多变化,甚至可能根本不起作用。 可能存在严重的不一致或完全缺乏文档。... HEP 可以使用任何类型的

    earsec:Erlang 中解析器组合器库的悲惨尝试

    我们从核心数据类型开始 - type parser () :: fun (( binary ()) -> { ok , { term (), integer (), binary ()}} | { error , { term (), integer (), binary ()}} 并尝试从可重用的构建块解析器构建大型解析器。...

    merklet:Merkle树用于Erlang中的数据复制

    默克雷特 重新实现了Riak的旧merkle树模块,但以更具可读性的方式(根据我)。 其他区别包括: 重命名某些功能仅仅是因为 插入只需要二进制代码作为键和值,而对散列不做任何假设。...为分布式调用的类型指

    jeson:用于erlang的JSON序列化器

    名称为字符串类型Record_name是用于存储从json字符串提取的数据的记录的名称。 这个名字是一个原子jeson:gen_encoder(Type_list, Field_name) :生成允许将erlang记录转换为json字符串的函数。 必须指定记录的结构...

    calculus:具有实际封装的新数据类型。 创建智能构造函数,私有和不可变字段,求和类型以及许多其他有趣的东西。 受Alonzo Church启发

    这个地方是用户定义的数据类型的术语,例如记录或结构。 该软件包引入了另一种定义新数据类型和安全接口的方法。 受阿隆佐教堂(Alonzo Church)的启发。 由Lambda微积分提供技术支持。安装可以通过将calculus添加...

    sift:Erlang的Typesafe数据验证,转换和一致性

    筛 筛选是用于检查和转换数据的程序上可声明的规则集。 它带有一组预定义的类型检查和转换模块,并且可能易于与其他模块进行扩展。

    cpie-cn_r148.pdf

    数据类型 模式识别 内置函数 并发 第2章串行编程 项式 模式匹配 表达式求值 模块系统 函数定义 原语 算术表达式 变量作用域 第3章列表编程 用于列表处理的BIF 常用列表处理函数 示例 列表的常用递归...

    stdlib2:Erlang stdlib扩展

    _ _ _ _ _ ____ ___| |_ __| | (_) |__|___ \ / __| __/ _` | | | '_ \ __) | \__ \ || (_| | | | |_) / __/ |___/\__\__,_|_|_|_.__/_____| Erlang stdlib extensions概述stdlib2是有用的功能,数据结构和行为的...

Global site tag (gtag.js) - Google Analytics