`
sdjcw
  • 浏览: 9397 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

erlang中参数或返回值到底使用{ }还是[ ]

阅读更多
写erlang代码时,参数或者返回值到底是用{ }元组,还是[ ]列表,还是不能随便用,总结了几点:
  • 当数据需要进行 [H|T] 处理的时候,使用[ ]列表,这是使用列表最重要的依据;其次就是这一些数据的类型是一致的。
  • 如果参数一个结构化的数据,则使用{ }元组,这些数据共同表达了一个数据结构,但是数据之间又没有直接的联系,比如:
  • {"sdjcw", "123@abc", "sdjcw@xxx.com"}
    

    三个参数分别表示用户的帐号、密码、电子邮箱,一起表达了“用户注册”的数据结构,但数据之间没有什么联系(帐号和邮箱不是一类东西),在一起传递时可以使用{ }。
        那是否使用dict结构会更好?如:
    [{user, "sdjcw"}, {password, "123@abc"}]

    我觉得也不一定,虽然dict结构能方便的通过dict:from_list/1转换为一个dict使用,但是普通情况下直接使用值组成的元组会简单些。
  • 至于MFA中的A(参数列表),是用[ ]括起来(貌似gen_server中只有一个参数的情况下不括也能用,不过不推荐!)。这里不管你的参数组合起来是否是有意义的数据结构,对于MFA来说,就是“一堆参数”,所以和第一条“类型是一致的”不冲突。

  • 我能想到的就这些,欢迎补充,如有不妥请拍砖~
    0
    0
    分享到:
    评论
    1 楼 yjl49 2012-03-14  
    个人觉得都差不多,你用{}也可以写成{atom,List}的方式。对于需要遍历的函数参数最好用List,省掉了匹配过程。

    相关推荐

      erlang 程序设计 源码

      它支持高阶函数,如函数作为参数、返回值,以及函数式编程常见的map、filter、reduce等操作。 4. **模式匹配**:Erlang的模式匹配允许在函数调用中解构复杂的数据结构,方便地提取所需信息,同时也用于case语句和...

      Erlang入门

      在Erlang中,函数是第一类公民,可以作为参数传递,也可以作为返回值。此外,Erlang支持模式匹配,使得函数定义可以基于不同的输入模式执行不同的逻辑。 **三、并发与并行** Erlang的并发模型是基于轻量级进程(也...

      Concurrent Programming in ERLANG (P1-90)

      模式匹配是Erlang中的一个重要特性,它允许开发者在函数定义中使用模式来匹配输入参数。通过这种方式,可以根据不同的输入提供不同的行为,使得代码更加清晰和易于维护。 **2.3 表达式评估** Erlang中的表达式评估...

      Erlang程序设计及源码

      在Erlang中,函数是第一类公民,可以作为参数传递,也可以作为返回值。函数式编程的特性使Erlang代码更易于理解和调试,因为它们通常没有副作用,这在并行计算中尤为重要。 3. **错误处理与容错** Erlang采用“let...

      Erlang程序设计中文版

      函数式编程的特点包括不可变数据、纯函数(没有副作用)和高阶函数(函数可以作为参数或返回值)。这种编程范式有助于编写出更简洁、可预测且易于测试的代码。 2. **并发与并行**:Erlang的并发模型基于轻量级进程...

      Erlang最佳实践

      文档应涵盖模块的用途、函数的参数和返回值、以及任何不寻常的行为或限制。 #### 九、最常见的错误 文章还列举了一些在Erlang编程中最常见的错误,包括资源泄漏、错误的错误处理、以及对并发模型的误解。了解这些...

      Erlang list用法

      Erlang是一种并发、分布式、面向进程的编程语言,广泛用于构建高可用性和容错性的系统。在Erlang中,列表是一种基本的数据结构,提供了...它们提供了强大的工具来处理和操作列表数据,是Erlang编程中不可或缺的一部分。

      erlang r17官方api及stdlib手册

      Erlang R17的API手册还会详细介绍每个函数的参数、返回值、可能的错误以及使用示例,帮助开发者更好地理解和使用这些功能。通过深入学习和实践,可以掌握Erlang的并发编程、错误处理和容错机制,这对于构建高效、...

      Concurrent Programming in ERLANG

      ### 并发编程在Erlang中的应用 #### 引言 Erlang是一种专为构建高并发、容错性强的分布式系统而设计的编程语言。它的设计理念深受函数式编程的影响,同时也支持过程式编程的一些特性。《并发编程在Erlang》这本书...

      Erlang Reference Manual

      手册中详细解释了术语的概念以及如何在程序中使用它们。 **1.2.2 数字(Number)** Erlang 支持多种类型的数值表示,如整数、浮点数等。文档中详细介绍了不同类型的数值表示方法及运算规则。 **1.2.3 原子(Atom)** ...

      erlang-stdlib-注释版

      【描述】"erlang-stdlib-注释版" 提示这个资源可能是一个特别版,其中对stdlib中的代码进行了详尽的注释,旨在帮助开发者更好地理解和使用Erlang的标准库。注释通常包括函数的功能解释、参数说明、返回值以及可能的...

      erlang 基础教程

      匿名函数(Funs)在Erlang中用于高阶编程,它们可以作为参数传递给其他函数或存储在变量中,从而实现灵活的功能组合。 ##### 列表推导 列表推导是Erlang中一个强大的功能,类似于Python的列表推导式,允许基于现有...

      erlang学习笔记

      通过`erlang:system_info(process_count)`和`erlang:memory()`函数,可以分别获取系统中的进程数量和总内存使用情况。 #### 5. 进程间通信与网络连接 在Erlang中,进程间通信主要通过发送和接收消息来实现。消息的...

      erlang_面对软件错误构建可靠的分布式系统

      5. **模式匹配与函数选择**:Erlang的模式匹配允许开发者在函数定义中指定参数模式,使得代码更简洁、易读。同时,Erlang的函数选择机制允许根据不同的参数类型执行不同的逻辑,进一步增强了其灵活性。 6. **热更新...

      Erlang初学:Erlang的一些特点和个人理解总结

      首先,Erlang是基于函数式编程范式的语言,这意味着它使用了数学中的函数概念,每个函数都有返回值,并且在Erlang中没有显式的return语句。函数式编程的另外一个特点是不变性,也就是所有的函数参数和变量在函数被...

      erlang-bblm:BBEdit 的 Erlang 语言模块

      BBEdit 的 Erlang 语言模块 v1.4, (2018/01/14) Erlang... 在 OTP 模块中键入对函数的调用时,Erlang 语言模块显示实际的参数顺序、参数名称以及文档中描述的返回值。下载可以从GitHub下载二进制文件: : 安装要安装该

      meck:Erlang的模拟库

      在Erlang项目中,通常将meck与EUnit或PropEr等测试框架结合使用,创建全面的测试套件。通过meck,可以有效地测试复杂系统中的单个组件,而无需担心它们的依赖关系。 总的来说,meck为Erlang开发者提供了一种强大的...

      erlang——gen-server.pdf

      Erlang中的`gen_server`模块是OTP (Open Telecom Platform)设计原则的一部分,它提供了一种标准的方式来实现客户端-服务器架构。gen_server行为模块旨在简化并发处理和错误管理,允许多个客户端共享服务端的资源。它...

    Global site tag (gtag.js) - Google Analytics