2017-02-03 103 views
0

我想實現以下功能:如何實現該功能?

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

Name是一個字符串,Age是整數,Address是一個字符串

函數返回地圖(人),其中包含的數據功能參數:

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

我知道如何與記錄實現它:

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

,但我需要的函數返回一個地圖來代替。

有什麼建議嗎?

+2

'人(姓名,年齡,地址) - >#{名字=姓名,年齡=年齡,地址=地址} .'? – Dogbert

+0

其實它應該是這樣的: person(姓名,年齡,地址) - > \t#{name =>姓名,年齡=>年齡,地址=>地址}。 但之後我打電話的功能它返回**異常錯誤:未定義功能testiranja:人/ 3。我會看一看。 Ty on hint :) – mrjoe

+0

@mrjoe:你的'testiranja'模塊中缺少'-export([person/3]).''。 –

回答

1

你真的需要一個函數來做到這一點?它可以使用記錄直接完成。這裏的任何方式都是代碼。有些地方的人使用定義語句來實現像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}. 
+0

是,所以需要用函數來做到這一點:) – mrjoe

+0

你也許知道如何解決這個問題: 實現的功能: LLEN(ListOfLists) 返回包含列表的長度在ListOfLists列表。 你的函數應該使用列表:map/2。 實施例: 1>玩意兒:LLEN([[1,2,3],[],[4,5]])。我知道如何使函數獲得列表的列表: 'list_len([]) - > 0; list_len([_ | T]) - > 1 + list_len(T).' – mrjoe