Я был на этом несколько часов, глядя на каждый веб-сайт и часть документации, которую я мог бы сделать. Я не могу понять, как удалить один и только один элемент (в этом случае, строку) из массива, сохраняя любые дубликаты в такте.Удалите один элемент из массива.
Я сделал найти способ, но это абсолютно зверским:
let remItem gs item =
if (chkItem gs item) then
let mutable fr = [| |] //temporary array
let mutable don = false //check if we found the element
for i in gs.inventory do
if not (i = item) && don then
fr <- (Array.append fr [|i|])
//add to the temp array until we find our item
elif i = item && don = false then don <- true
//we found it, skip just once so it doesn't get added
elif don then fr <- (Array.append fr [|i|])
//now just add everything else to the temp array
{ gs with inventory = fr }
else gs
Я написал это, и я едва знаю, как это работает. Пожалуйста, скажите, что есть лучший способ сделать это. Я знаю, что изменяемые переменные не нужны, но я написал дюжину одинаково ужасающих чистых функций и пришел к выводу, что это лучшее, что я мог бы сделать. Я уже пробовал много массивов. * Рекурсивные функции уже, я не могу заставить кого-либо из них соответствовать тому, что я хочу. Я просто хочу знать, можно ли делать это аккуратно и чисто в F #.
Это сделало это для меня! Благодарю вас. Я пытался индексировать массив, но, эх, продолжал идти за пределы, ха-ха. – Konata