Я изучаю преобразование нашей кодовой базы C# в F#. Эта кодовая база использует внешнюю библиотеку, предоставляющую интерфейс; один из методов позволяет библиотеке создавать новые экземпляры нашего класса:
public class Worker : IWorker
{
public IWorker CreateNewInstance()
{
return new Worker();
}
}
Учитывая количество этих классов, я хотел бы воспользоваться объектными выражениями. Есть ли способ, которым объектное выражение может ссылаться на себя таким образом?
Я не уверен, что порекомендовал бы это, не зная больше о вашем варианте использования, но что-то вроде этого должно работать:
let rec makeWorker () =
{
new IWorker with
member _.CreateNewInstance() = makeWorker ()
}
let worker1 = makeWorker ()
let worker2 = worker1.CreateNewInstance()
Этот веб-сайт использует (очень) старую версию F#. Современные версии должны разрешать одиночное подчеркивание, но в любом случае это нормально.
Это будет работать отлично; Спасибо! Обратите внимание, что по какой-то причине мне пришлось заменить
_.
наthis.