2013-11-24 38 views
0

:)什么也不添加到列表

我想写DRY erlang代码,但我有一个问题。我有这样的一个记录

-record(person, {firstname, lastname, phones=[], emails=[]}). 

我用它来创建一个简单的人名单的地址簿。然后我想调用一个函数:

updatePersonsInfo(FName,LName,Phone, Email,[Old = #person{firstname = FName, lastname = LName} | T]) -> 
    UpdatedPhonesList = #person.phones ++ [Phone], 
    UpdatedEmailsList = #person.emails ++ [Email], 
    [Old#person{phones= UpdatedPhonesList, emails = UpdatedEmailsList}] ++ T; 

而且我要调用此函数,但我想只添加一个电子邮件。事情是这样的:

updatePersonsInfo(FName,LName, "",Email,Book); 

但后来我收到一个错误:

** exception error: bad argument 
in operator ++/2 
    called as 4 ++ [] 

所以我想这仅仅是添加任何列出的问题。当然,我可以将这个函数分割为:updatePersonsEmail和updatePersonsPhone,但是这两个函数的逻辑是相同的,这会使我的代码变得丑陋。

任何想法?我试图使用null原子,或_,甚至[],但没有任何工作。

回答

1

#person.phones不返回旧的电话列表。为什么二郎抱怨它返回只是一些“手机”字段中“人”的记录.. 即约4 ++ []

变老电话清单,你必须使用旧#person.phones

+0

coures!感谢队友,抱歉打扰你的语法错误 – NickyNick

相关问题