Как получить доступ к значению, которое принадлежит записи из этой самой записи? - PullRequest
3 голосов
/ 11 июня 2019

Я ДЕЙСТВИТЕЛЬНО новичок в F #, поэтому я мог использовать здесь неправильную терминологию.Пожалуйста, не стесняйтесь поправлять меня, если я ошибаюсь, я был бы очень признателен!В любом случае, к вопросу

У меня есть запись, которую я определил следующим образом:

    type EventSource = {
        SourceName: string
        Address:    string 
        ParseDocument: HtmlDocument -> Event seq }

И я создал экземпляр этой записи примерно так:

let lofSource = {
    SourceName = "LOF"
    Address = "https://lof.dk/syd/kurser"
    ParseDocument = fun document ->
        document.Descendants ["div"]
        |> Seq.filter (fun d -> d.HasClass("item"))
        |> Seq.map (
            fun e ->
            let linkElement 
                = e.Descendants (fun j -> j.HasClass "item-title") 
                |> Seq.head 
                |> (fun y -> y.Descendants ["a"]) 
                |> Seq.map (fun fa -> fa.Attribute "href") 
                |> Seq.head
            {         
                Title = e.AttributeValue "data-holdnavn"  
                Link =  linkElement.Value() 
                Status = e.AttributeValue "data-status"
                Image = Address //Here! 
                City = e.AttributeValue "data-bynavn"
                Date = System.DateTime.ParseExact(e.AttributeValue("data-datosort"), "yyyyMMdd", null);
                PostalCode = e.AttributeValue("data-postnr")})
    } 

В строке, где я пытаюсь присвоить значение элементу Image, оно говорит мне, что значение или конструктор 'Address' не определены.

Я пытался использовать самоидентификатор при создании экземпляра записи, а затем пытался получить доступ к Address, как

this.Address

, но он говорит мне, что «this» не определено.Я предполагаю, что я упускаю что-то очень фундаментальное здесь, кто-нибудь может мне помочь?Это то, что я пытаюсь сделать бессмысленным?

1 Ответ

3 голосов
/ 11 июня 2019

Вы не можете делать это с записями. См .: Ссылка на запись изнутри себя во время строительства

Вы можете сделать это с другой привязкой (я не смог заставить ваш код скомпилироваться и упростил его):

type EventSource = {
   SourceName: string
   Address:    string 
   ParseDocument: string -> string}


let lofSource = 
    let helloThere = "General Kenobi"
    {        
        SourceName = "LOF"
        Address = foo
        ParseDocument = fun document ->                      
            foo
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...