如何实现这个功能?

时间:2017-02-03 07:48:22

标签: erlang

我正在尝试实现以下功能:

person(Name, Age, Address) -> Person. 

Name是字符串,Age是整数,Address是字符串

函数应该返回包含函数参数中的数据的map(Person):

person("Kermit the frog", 60, "123 Sesame street").

我知道如何用记录实现它:

person1() -> #person{name = "Kermit the Frog",
                     age = 60,
                     address = "123 Sesame Street"}.

但我需要该函数来返回地图。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你真的需要一个功能吗?它可以直接使用记录完成。这里的任何方式都是代码。有些地方人们使用define语句来实现像oop的构造函数一样。如果您正在搜索相同的方法,可以使用该方法...

-module(test).
-export([init/0, person/3]).

-record(person, {name,age,address}).
-define(PERSON(Name, Age, Address), #person{name=Name, age=Age, address=Address}).


init()->
        ?PERSON("Kermit the frog", 60, "123 Sesame street").

person(Name, Age, Address)->
        #person{name=Name, age=Age, address=Address}.