Может ли объектное выражение ссылаться на себя?

Я изучаю преобразование нашей кодовой базы C# в F#. Эта кодовая база использует внешнюю библиотеку, предоставляющую интерфейс; один из методов позволяет библиотеке создавать новые экземпляры нашего класса:

public class Worker : IWorker
{
    public IWorker CreateNewInstance()
    {
        return new Worker();
    }
}

Учитывая количество этих классов, я хотел бы воспользоваться объектными выражениями. Есть ли способ, которым объектное выражение может ссылаться на себя таким образом?

Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
БЭМ: Конвенция об именовании CSS
БЭМ: Конвенция об именовании CSS
Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и...
Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По...
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
Конфигурация Jest в angular
Конфигурация Jest в angular
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.
1
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не уверен, что порекомендовал бы это, не зная больше о вашем варианте использования, но что-то вроде этого должно работать:

let rec makeWorker () =
    {
        new IWorker with
            member _.CreateNewInstance() = makeWorker ()
    }

let worker1 = makeWorker ()
let worker2 = worker1.CreateNewInstance()

Это будет работать отлично; Спасибо! Обратите внимание, что по какой-то причине мне пришлось заменить _. на this.

Chris Long 13.02.2023 20:27

Этот веб-сайт использует (очень) старую версию F#. Современные версии должны разрешать одиночное подчеркивание, но в любом случае это нормально.

Brian Berns 13.02.2023 20:27

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