Показать целое число в представлении

Я новичок в Giraffe и у меня возникают трудности с отображением целого числа. Моя модель

type Person =
    {
        FirstName   : string
        LastName    : string
        Age         : int
    }

И мое мнение таково:

let index2 (model : Person) =
    [
        partial()
        p [] [
            encodedText model.FirstName
            br []
            encodedText model.LastName
            br []
            int model.Age
        ]
    ] |> layout

Возвращаемое сообщение об ошибке: "Все элементы списка должны быть одного типа. Так как мне отобразить возраст?

1 ответ

Решение

Я не совсем знаком с Жирафом (скорее Fable), поэтому я не знаю, что установить и настроить для его воспроизведения.

Тем не менее, глядя на p [] [ ... ]Ясно, что функция требует список в качестве второго параметра и, следовательно, все элементы должны быть одного типа.

Давайте посмотрим внутрь. Согласно GiraffeViewEngine.fs, encodedText возвращается Text что является случаем в XmlNode DU:

type XmlNode =
    | ParentNode  of XmlElement * XmlNode list
    | VoidElement of XmlElement
    | Text        of string

Так что это устанавливает тип для всего списка, XmlNode,

br функция определяется как let br = voidTag "br" где voidTag функция возвращает VoidElement что является еще одним случаем в XmlNode ДУ, так это нормально.

И поэтому я не знаю, что вы хотели сказать int model.Age, а также int на самом деле оператор в F# для преобразования объекта в целое число. В любом случае, он не возвращает ничего типа XmlNode, Вместо этого попробуйте

p [] [
    encodedText model.FirstName
    br []
    encodedText model.LastName
    br []
    encodedText (string model.Age)
]

Тем самым вы будете ToString возраст, это превратится в Text в случае если XmlNode и код должен скомпилироваться.

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