F# Canopy - генерировать случайные буквы и / или цифры и использовать их в переменной

Я использую F# Canopy для завершения веб-тестирования. Я пытаюсь создать и загрузить случайное число с буквами или без, не так важно, и использовать его для вставки на мой сайт.

Код, который я сейчас использую:

let genRandomNumbers count =
    let rnd = System.Random()
    List.init count 

let l = genRandomNumbers 1

"#CompanyName" << l()

#CompanyName идентификатор элемента, в который я пытаюсь передать l. В существующем состоянии я получаю сообщение об ошибке: "Ожидалось, что выражение будет иметь тип string, но здесь оно имеет тип list.

Любая помощь будет принята с благодарностью.

1 ответ

Решение

<< Оператор canopy записывает строку в селектор (я не использовал ее, но документация выглядит довольно ясно), но ваша функция возвращает список. Если вы хотите, чтобы случайная строка работала, вы можете сделать что-то вроде этого (не проверенный код)

let randomNumString n = genRandomNumbers n |> List.map string |> List.reduce (+)

Это отображает ваш случайный список в строки, а затем объединяет все строки вместе, используя первый элемент в качестве начального числа аккумулятора. Вы также можете сделать складку

let randomNumString n = genRandomNumbers n
                         |> List.fold (fun acc i -> acc + (string i)) "" 

Собираем все вместе

let rand = new System.Random()

let genRandomNumbers count = List.init count (fun _ -> rand.Next())

let randomNumString n = genRandomNumbers n |> List.map string |> List.reduce (+)

"#CompanyName" << (randomNumString 1)

В общем, F# не будет продвигать вас по типу. Так как << Оператор хочет, чтобы строка была справа, вам нужно как-то отобразить ваш список в строку. Это означает итерацию каждого элемента, преобразование числа в строку и добавление всех элементов в одну итоговую строку.

Другие вопросы по тегам