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# не будет продвигать вас по типу. Так как <<
Оператор хочет, чтобы строка была справа, вам нужно как-то отобразить ваш список в строку. Это означает итерацию каждого элемента, преобразование числа в строку и добавление всех элементов в одну итоговую строку.