初识Erlang,Hello World(3)

今天不只要对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 …
more ...

初识Erlang,Hello World (1)

这两天开始玩Erlang,咱们从Hello World开始吧。

先是要到官网http://www.erlang.org/download.html下载安装包,安装上,设置好系 PATH,然后打开命令行,输入erl,如果看到类似于

Eshell V5.10.1  (abort with ^G)
1>

的话,就表示Erlang安装成功。这东西叫做Erlang的Shell。

然后就是最经典的Hello World:

随便用一个文本编辑器输入:

    -module(helloworld).
    -export([hw/0]).

    hw() -> io:format("Hello World! ~n").

保存为helloworld.erl,然后在命令行下进入该文件所在目录,进入Erlang Shell,输 入 …

more ...

初识Erlang,Hello World (2)

昨天费了老大劲终于把Hello World打出来了,今天我们继续。

说N遍Hello World,递归的使用

Hello World说一遍怎么够呢,说N遍吧。代码如下:

    -module(helloworld).
    -export([hw3/1]).

    % 打印N遍Hello world
    hw3(N) when N > 0 ->
        io:format("Hello World ~n"),
        hw3(N-1);

    hw3(0) -> ok.

这有什么好坑的呢:

    hw3(N) when N > 0 ->

when后面是一个断言(guard),仅在它为true时函数会被执行。

断言所能使用的语句是受限的,不能用自定义的函数。

    io:format("Hello World ~n"),
    hw3 …
more ...

我的 Sublime Text2 配置

Sublime Text 2是最近很火的一个代码编辑器,我也跟风玩了一下,果然很好用。方便的插件管理器加上丰富的插件,可以很容易把它调教得很顺手。几乎每项功能都可以用鼠标和键盘两种方式来实现,方便各种习惯的人。Sublime Text 2 的介绍与推荐网上已经有很多,这里记一下我安装的包和配置。

Package Control (因为这东西在后台更新曾经导致我的Sublime完全崩溃, 已经弃用)

包管理器是必备的,新下载的Sublime Text 2 第一个装的肯定是这个,有了它,装其他的包就很方便了。

安装方式有两种,第一种是在线下载安装:在 Sublime Text 2 中按下ctrl+`(就是大键盘数字1左边的那个键),拷贝以下命令到窗口下部的终端中,

    import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not …
more ...


解决Ulipad和有道词典冲突的问题

Ulipad和目前版本的有道词典有冲突,表现为先开有道词典,Ulipad就无法运行。

解决方法是:找到Ulipad安装目录下的config.ini,添加以下两行:

    [server]
    port=50001

重启Ulipad,就不冲突了。

原因是Ulipad通过绑定指定端口来避免重复运行,而这个端口恰好与有道使用的端口一致。只要选一个未被其他软件使用的端口,就可以解决问题。

参考:http://code.google.com/p/ulipad/issues/detail?id=306, Ulipad FAQ.htm文件

more ...