2013-11-24 2 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, но логика этих двух функций будет такой же, что сделает мой код уродливым.

Любые идеи? Я пытался использовать нулевой атом, или _, или даже [], но ничего не работало.

ответ

1

#person.phones не возвращает старый список телефонов. Она возвращает только номер поля «телефоны» в «лицо» запись .. Именно поэтому Эрл жалуется на 4 ++ []

Чтобы получить старый список телефонов, вы должны использовать старый # person.phones

+0

Из уха! спасибо mate, извините, что беспокою вас с синтаксической ошибкой – NickyNick

Смежные вопросы