2007-11-09

把Module搞得像Class

关键字: oop
http://www.clickcaster.com/items/the-black-art-of-erlangs-parameterized-modules
引用
To declare a parameterized module, simply specify some variable names in the module declaration...Parameterized modules give you what are effectively constants which can be declared per "instance" of a module.

非标准用法,风险自负。
评论
Trustno1 2007-11-10   回复
这个提案实际上是一个不那么甜也不那么淡的语法糖. 他必须仍然遵守no effects的约定.Ulf Wigert提到他对Paramazied Modules的扩充

-module(pmod, [X, Y]).

-export([set_Y/1,
sum/0]).


sum() ->
    X + Y.

set_Y(NewY) ->
    {?MODULE, X,NewY}.

Eshell V5.5.4.3  (abort with ^G)
1>
1> c(pmod).
{ok,pmod}
2> M = pmod:new(3,4).
{pmod,3,4}
3> M:sum().
7
4> M1 = M:set_Y(5).
{pmod,3,5}
5> M1:sum().
8

M1=M:set_Y(5) 这一点非常重要,如果允许M:set_Y(5),M:sum()输出8的话那么整个Erlang就分崩离析
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

gigix
搜索本博客
最近加入圈子
存档
最新评论