2013-11-24 67 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

相關問題