论坛首页 综合技术论坛

把Module搞得像Class

浏览 2840 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-09  
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.

非标准用法,风险自负。
   发表时间: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就分崩离析
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics