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.
非标准用法,风险自负。
- 22:59
- 浏览 (993)
- 论坛浏览 (1034)
- 评论 (1)
- 分类: 企业应用建筑师
- 相关推荐
评论
这个提案实际上是一个不那么甜也不那么淡的语法糖. 他必须仍然遵守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就分崩离析
-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就分崩离析







评论排行榜