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原子,或_,甚至[],但沒有任何工作。
coures!感謝隊友,抱歉打擾你的語法錯誤 – NickyNick