2016-12-21 4 views
-1

Я создал программу, которая автоматически удаляет элемент, указанный мной в Lst2, который является элементом 3. Теперь я хочу вручную выбрать, какой элемент нужно удалить в списке, который я буду вводить.Как удалить элемент в списке вручную?

-module(list). 
-import(lists,[delete/2]). 
-export([del/1]). 
del([]) -> []; 

del(N) -> 
    Lst1 = N, 
    Lst2 = delete(3,Lst1), 
    io:fwrite("~w~n",[Lst2]). 
+0

Обратите внимание на [this] (http://stackoverflow.com/questions/688250/how-to-read-integer-in-erlang) вопрос. Btw, не использовать явный импорт. Это может ввести в заблуждение –

ответ

1

Передача в индексе при вызове функции del будет работать:

-module(list). 
-import(lists,[delete/2]). 
-export([del/2]). 

del(_Index, []) -> []; 
del(Index, List) -> 
    List2 = delete(Index,List), 
    io:fwrite("~w~n",[List2]). 

Или, если вы хотите получить индекс от пользовательского ввода вы можете читать из STDIN, как это:

-module(list). 
-import(lists,[delete/2]). 
-export([del/2]). 

del([]) -> 
    io:format("Empty list. Nothing to remove.~n"), 
    []; 
del(List) -> 
    {ok, [Index]} = io:fread("Index to remove : ", "~d"), 
    List2 = delete(Index,List), 
    io:fwrite("~w~n",[List2]).