`
cnDenis
  • 浏览: 100319 次
  • 来自: 广州
社区版块
存档分类
最新评论

初识Erlang,Hello World(3)

阅读更多

初识Erlang,Hello World(3)

by cnDenis 2013年3月15日

今天不只要对World说Hello,还要对别人说Hello

hw(Who) ->
    io:format("Hello ~p ~n", [Who]).

平平无奇的一个函数,对Who说Hello

如果要对一组人说Hello,可以这么做:

hw10(L) ->
    [hw(X) || X <- L].

hw10() ->
    L = ["ali", "bob", "cat"],
    hw10(L).

上面是用了列表解析的方法。

也可以用lists:map,效果和上面是一样的

hw11(L) ->
    lists:map(fun hw/1, L).

hw11() ->
    L = ["ali", "bob", "cat"],
    hw11(L).

另一个很相似的做法是lists:foreach:

hw14(L) ->
    lists:foreach(fun hw/1, L).

hw14() ->
    L = ["ali", "bob", "cat"],
    hw14(L).

这两种做法有什么区别呢?看看输出:

2> helloworld:hw11().
Hello "ali" 
Hello "bob" 
Hello "cat" 
[ok,ok,ok]

10> helloworld:hw14().
Hello "ali" 
Hello "bob" 
Hello "cat" 
ok

虽然map和foreach都是把同一个函数作用在列表的每一个元素上, map是会生成一个新的列表来存储结果并返回,(由于hw/1的值就是ok,所以会得到包含3个ok的列表) 而foreach仅会返回ok。

不使用Lists模块的话,可以这么做:

hw12([H|T]) ->
    hw(H),
    hw12(T);
hw12([]) ->
    ok.

hw12() ->
    L = ["ali", "bob", "cat"],
    hw12(L).

这是Erlang中最常见的Head|Tail写法了吧。

也可以用case改写上面的函数

hw13(L) ->
    case L of
        [] -> ok;
        [H|T] -> hw(H),
                 hw13(T)
    end.

hw13() ->
    L = ["ali", "bob", "cat"],
    hw13(L).
分享到:
评论

相关推荐

    HelloWorld-main.zip

    【HelloWorld-main.zip】是一个包含了多种编程语言的“Hello, World!”程序源代码的压缩包。这个资源对于初学者来说非常有价值,因为它涵盖了从传统到现代的多种编程语言,可以帮助新接触编程的人快速理解每种语言的...

    各种程序语言的Hello_World程序

    module HelloWorld (main) where main = putStrLn "Hello World!\n" ``` **解析:** - Haskell是一种纯函数式编程语言。 - `module`定义模块。 - `putStrLn`用于输出字符串。 #### Icon ```icon procedure main() ...

    esl-erlang_23.0_windows_amd64.exe rabbitmq-server-3.8.4.exe

    esl-erlang_23.0和rabbitmq-3.8.4windows版本 直接下载安装就行,可以直接下载就可安装,非常的方便...4. erlang安装后要检查能否编译成功一个helloworld文件。 5. rabbitMQ无法安装插件时非常有可能是erlang出问题了。

    RabbitMQ hello world源码

    "RabbitMQ hello world源码"通常是指一个简单的示例,用于展示如何在RabbitMQ中发送和接收消息。这个例子可以帮助初学者快速理解RabbitMQ的基本工作原理和API使用。 **发送端(Producer)** 在RabbitMQ的"hello ...

    RabbitMQ-HelloWorld:RabbitMQ的Hello World示例

    在RabbitMQ的"Hello World"示例中,首先要做的是建立一个到RabbitMQ服务器的连接,并创建一个信道。信道是RabbitMQ中的工作线程,通过它我们实际执行发布和消费消息的操作。 ```csharp using RabbitMQ.Client; ...

    RabbitMQ系列(一)入门Helloworld

    **RabbitMQ系列(一)入门Helloworld** RabbitMQ是一种开源的消息代理和队列服务器,它基于AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中的异步处理和解耦。在这个系列的第一部分,我们...

    Erlang23_3.zip

    在"Erlang23_3"这个压缩包中,我们可以推测这包含了Erlang的第23个主要版本的第三个修订版。通常,软件版本号的格式是主版本号.次版本号.修订号,所以这里可能是Erlang的稳定版本。该版本可能包含性能优化、新功能、...

    erlang学习1.pdf

    **运行程序**:启动Erlang Shell,并调用`helloworld:sayhello()`执行程序。 #### 三、TCP客户端实现 - **基本需求**:实现一个简单的TCP客户端,可以连接至Web服务器并显示服务器返回的数据。 - **实现过程**: ...

    erlang编程 Introducing Erlang

    ### 3. OTP(Open Telecom Platform) OTP是Erlang的开源框架,提供了一套标准库和设计模式,用于构建可维护、可扩展的应用。它包括行为(如GenServer、GenEvent和Supervisor)、应用和系统结构的指导原则,以及...

    erlang25.0 windows版本

    3. **环境变量**:安装过程中,安装程序可能会自动添加Erlang的bin目录到系统的PATH环境变量中,确保命令行可以识别`erl`等Erlang命令。 4. **验证**:安装完成后,打开命令行窗口并输入`erl`,如果Erlang成功安装,...

    inside Erlang VM3

    ### Erlang VM (Erlang虚拟机)深入解析 #### Erlang简介 Erlang是一种通用、并发、强容错的编程语言,最初由爱立信公司开发,旨在解决电信系统的高并发、高可靠需求。它运行在Erlang虚拟机(Erlang Virtual Machine...

    erlang_版本24.3.4.4

    3. **编译Erlang**:进入解压后的目录,运行`./configure`命令来配置编译选项。这一步会检测你的系统环境并生成适合的Makefile。 4. **构建和测试**:执行`make`命令开始编译Erlang。这个过程可能需要一些时间,...

    erlang资源

    3. **错误处理与容错**:Erlang推崇“let it crash”哲学,鼓励程序在遇到错误时快速失败并重启,而不是尝试修复。书里可能会讨论如何构建健壮的系统,利用Erlang的故障隔离特性。 4. **分布式编程**:Erlang进程...

    erlang22最新下载包

    3. **错误修复**:Erlang22.1可能会包含一系列错误修复,确保代码的稳定性和可靠性。 4. **库和工具的更新**:OTP中的各种库(如Mnesia数据库、ERTS(Erlang Run-Time System)和其他并发工具)可能进行了升级,以...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    Erlang官网下载过慢

    3. 更换下载时间:避开网络高峰期进行下载。 4. 镜像站点:寻找Erlang的镜像站点,这些站点通常位于地理位置更近的地方,下载速度会更快。 标签中提到了“Erlang Rabbit 异步通讯”,这意味着讨论的重点是Erlang...

    erlang 环境配置文档说明

    此时应看到控制台输出 `helloWorld`。 以上步骤展示了如何在Windows环境下安装配置Erlang及其开发工具,包括Eclipse和Erlide插件,并创建简单的Erlang项目及模块,最后演示了如何编译和运行Erlang程序。这将有助于...

    Erlang 运行环境的安装文件

    6. **测试运行环境**:在 REPL 中,你可以尝试编写简单的 Erlang 代码,例如 `io:fwrite("Hello, World!\n")`,然后按 Ctrl+C 退出。 7. **获取帮助**:Erlang 提供了丰富的文档和在线资源,包括官方手册、Erlang/...

    xiandiao_erlang_Erlang课后习题_

    3. **热代码更新**:Erlang支持运行时代码替换,无需停止服务即可更新和修复应用程序,这在实时系统中非常有用。 4. **容错性**:Erlang的进程模型鼓励设计出可以失败并从中恢复的系统。当一个进程出错时,它不会...

Global site tag (gtag.js) - Google Analytics