`
litaocheng
  • 浏览: 337724 次
  • 性别: 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  
简单,高校,易读,写错字了吧

相关推荐

    Erlang6大数据存储方式总结

    虽然MySQL不是Erlang原生的存储解决方案,但其强大的SQL查询能力和成熟的社区支持使其在处理复杂查询和大规模数据时表现出色。通过Erlang与MySQL的集成,开发者可以利用两者的优点,构建混合型的存储解决方案。 ...

    erlang_版本24.3.4.4

    - **Erlang的数据类型**:包括原子(atom)、整数、浮点数、字符串、列表、元组、位串等。 - **Pattern Matching**:Erlang的匹配操作符`=`允许在函数调用、case语句和receive语句中进行模式匹配。 熟悉这些概念和...

    Erlang_CNode用户指

    3. **Erlang数据类型和API**:介绍CNode API,包括如何在C中表示和操作Erlang的数据类型(如整数、原子、列表等),以及如何调用Erlang函数和处理返回结果。 4. **进程通信**:阐述如何在CNode中创建Erlang进程,...

    erlang编程 Introducing Erlang

    它的动态类型系统和强大的类型推断让代码更加灵活。 Simon St. Laurent的《Introducing Erlang》这本书深入浅出地介绍了这些概念,是学习Erlang的理想起点。通过阅读这本书,读者将能够理解Erlang如何处理并发、...

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

    ### Erlang Binary与Bit String 数据类型详解 #### 引言 Erlang 是一种功能强大且灵活的编程语言,尤其适合开发高并发、分布式及容错性应用。自 R12B 版本以来,Erlang 在处理二进制数据方面引入了两项重大更新:...

    erlang资源

    1. **Erlang语法**:涵盖基本的变量、数据类型(如原子、列表、元组和二进制)、控制结构(如case表达式和if语句)以及函数定义。 2. **函数式编程概念**:Erlang是纯函数式语言,书中可能会介绍函数式编程的基本...

    erlang趣学指南

    Erlang是一种动态类型语言,类型检查在运行时进行,这意味着你不需要在代码中声明变量的数据类型。不过,理解Erlang的类型系统对于编写高效且可维护的代码至关重要。 递归在Erlang程序设计中占有重要地位,因为...

    erlang programming

    编程+Erlang.pdf可能会详细介绍Erlang的基础语法、数据类型、过程和模块等概念。 2. **并发编程**:Erlang的并发模型是其独特之处。它通过轻量级进程(Lightweight Processes, LWP)实现并发,进程间通信(Inter-...

    windows下安装Erlang环境

    Erlang是一种强大的编程语言,特别适合于构建高并发、分布式和容错性强的系统。由爱立信的CS-Lab开发,Erlang的设计目标是处理大规模并发活动,这在传统的操作系统上可能非常困难。它的核心特性使其在处理并发性、...

    Erlang资料大全

    “Erlang中文基础教程”这部分内容可能包括了Erlang的基础语法、数据类型、控制结构、函数定义、过程创建与通信等方面。对于初学者来说,理解这些基本元素至关重要。例如,Erlang的数据类型包括原子(atom)、整数、...

    erlang23.2版windows64位.zip

    4. **动态类型**:Erlang采用动态类型,允许快速开发和迭代,但同时也可能导致运行时错误。 5. **函数式编程**:Erlang是函数式的,强调无副作用的纯函数,以及数据不可变性,这有助于编写简洁、易于理解和测试的...

    erlang win64_18.1

    5. 朴素的数据类型:Erlang的动态类型系统包含原子(atom)、整数、浮点数、列表、二进制等,简单且易于理解。 Erlang在18.1版本中可能引入了一些新特性、改进和修复。例如,可能对性能进行了优化,增加了新的...

    erlang压缩包.rar

    其数据类型包括原子(atom)、整数、浮点数、字符串、列表和二进制数据。Erlang使用模式匹配来解构数据结构,并通过消息传递实现进程间的通信。 学习Erlang的关键概念包括: - **模式匹配**:在函数定义中,可以...

    Programming Erlang

    首先,书中会介绍Erlang的简单数据类型,如原子(atom)、整数、浮点数、字符串和列表,以及如何进行基本的运算和比较。然后,读者将学习到Erlang的函数式编程思想,包括函数定义、模式匹配、匿名函数(也称为闭包)...

    <27>erlang record

    在Erlang中,Record提供了一种方便的方式来定义和访问具有固定字段的数据类型。 在Erlang中,Records是由一个特殊的语法创建的,形如`#record_name{field1 = value1, field2 = value2, ...}`。Record_name是记录的...

    Erlang趣学指南

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

    programming erlang src code

    8. 数据类型与模式匹配:Erlang具有丰富的数据类型,如原子、列表、元组等,以及强大的模式匹配功能。源码中可以看到如何利用这些特性编写简洁且高效的代码。 9. 面向连接的网络编程:Erlang的inet模块提供了一套...

    Erlang与Mysql对接

    Erlang是一种面向并发的、强类型的编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。MySQL则是一款广泛使用的开源关系型数据库管理系统,以其高性能、稳定性及易用性而闻名。当Erlang应用程序需要处理...

    Erlang程序设计].源代码

    6. 数据类型与模式匹配:Erlang的数据类型包括原子(atom)、整数、浮点数、列表、元组等,模式匹配是其语法的一大特色。源代码将展示如何通过模式匹配来解构数据结构和执行条件分支。 7. BEAM虚拟机:Erlang运行在...

    《Programming Erlang》

    Erlang是一种静态类型、函数式编程语言,最初由爱立信开发,用于构建电信系统,因其在处理高并发、分布式计算和容错性方面的优势,现在也被广泛应用于互联网和实时系统。 Erlang的关键特性包括: 1. **并行计算**...

Global site tag (gtag.js) - Google Analytics