2013-10-28 4 views
4

Я посмотрел в модуле массива F #, но кажется, что нет функции, которая могла бы удалить определенный элемент из массива. Мне просто интересно, существует ли какая-либо функция, которая делает это?F # удалить определенный элемент в массиве

E.g.

remove 2 [| 0 ; 1 ; 2 ; 3 ; 4 |] 
val it -> [| 0 ; 1 ; 3 ; 4 |] 

UPDATE

Массив фильтра, что я ищу. В дополнение к этому, немного более конкретным с моим делом.

Если массив, который у меня есть, не является массивом обычного типа, а массивом ссылок определенного класса. Предполагая, что я хочу удалить только элемент, у которого member.order = 2, тогда как будет предикат?

+1

Поскольку вы, кажется, делаете этот курс: http://undergraduate.csse.uwa.edu.au/units/CITS3242/ есть ли причина, по которой вы не спросили своего лектора? –

+0

Потому что это все глупые вопросы, и я часто задаю эти вопросы довольно часто - все равно сохраняя интересные вопросы для него. Откуда ты знаешь? – user2431438

+1

Ваши вопросы выглядели подозрительно домашнее задание и не так много курсов F #. Кроме того, вы должны быть в состоянии выяснить лямбда самостоятельно. –

ответ

10

Вы можете достичь этого с помощью F # Array функции модуля Array.filter, как показано ниже:

> [| 0 ; 1 ; 2 ; 3 ; 4 |] |> Array.filter ((<>)2);; 
val it : int [] = [|0; 1; 3; 4|] 

UPDATE: Это не трудно понять, что должно быть лямбда. Для того, чтобы сделать его немного менее скучен, вы можете получить тот же результат, с другой одной функцией Array.choose:

Array.choose (fun x -> if x.order = 2 then None else Some(x)) 

Также позвольте мне отметить, что обе функции решения нескольких иного немого вопроса: удалить из массива все элементов, удовлетворяющих условию. Буквально ваш вопрос может быть прочитан как удаление только первый возникновение элемента. Такое чтение еще дает вам шанс для creative вклад в вашу домашнюю работу :)

+0

Отлично. Не могли бы вы увидеть мое обновление, немного более конкретное о моем случае? – user2431438

+0

@ user2431438 'Array.filter (fun x -> x.order <> 2)' –

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