Объявление, но не определение классов F #

Есть ли способ в F # объявить класс, но не определить его, как в C #, C ++ или Java, или почти на любом другом языке, чтобы мы могли избежать использования ключевого слова and? У меня есть два довольно больших класса, которые ссылаются друг на друга, и я не хочу помещать их оба в один файл, например:

type Type1 =
    // definitions

and Type2 =
    //definitions

person user3685285    schedule 09.03.2016    source источник
comment
AFAIK вам не повезло - конечно, вопрос в том, зачем вам нужны два огромных класса, которые ссылаются друг на друга в первую очередь;)   -  person Random Dev    schedule 09.03.2016
comment
Кстати: одним из выходов может быть рефакторинг необходимых частей в интерфейсы Interface1 и Interface2 - вы можете определить их в одном файле, а затем реализовать их где угодно   -  person Random Dev    schedule 09.03.2016
comment
Я очень склонен проголосовать против этого вопроса, потому что вы даже не показали, что искали функциональное решение или даже не показали какой-либо код на этот счет.   -  person Guy Coder    schedule 09.03.2016
comment
@Guy Coder Прежде всего, я показал, что у меня есть решение, но я ищу более чистое решение. Учитывая, что его нет, разумно предположить, что я БЫЛ безрезультатно. Во-вторых, это не вопрос кодирования. Я не отлаживаю конкретный код, а просто задаю вопрос о дизайне, для которого требуется только предоставленная мной оболочка кода. У читателей есть все необходимое, чтобы ответить на вопрос.   -  person user3685285    schedule 09.03.2016
comment
@ user3685285 эээ .... вы не должны указывать, что речь идет не о кодировании, потому что в этом случае вы ошибаетесь ...   -  person Random Dev    schedule 09.03.2016
comment
Я имел в виду большие классы. Если вы им покажете, возможно, мы увидим другой способ решения проблемы. Я не думаю, что он есть, но я не могу сказать наверняка, не увидев фактического кода.   -  person Guy Coder    schedule 09.03.2016
comment
@Carsten В чем я ошибаюсь? Не просить помощи в дизайне. Не собираюсь показывать классы. Это был не мой вопрос. Мой вопрос был только в том, есть ли более простой способ сделать это, кроме типа ... и. Я уже определил, что в дизайне два класса должны ссылаться друг на друга. Неважно, лучший это дизайн или нет.   -  person user3685285    schedule 09.03.2016
comment
@ user3685285, тогда зачем отвечать Парню, что я ищу более чистый обходной путь и просто задаю вопрос о дизайне? - в любом случае я на этом этапе   -  person Random Dev    schedule 09.03.2016
comment
@Carsten, ладно, там плохой выбор слов, но если вы посмотрите на вопрос, я не думаю, что вписываюсь ни в одну из этих категорий вне темы: stackoverflow.com/help/on-topic. Я спросил об очень специфическом механизме программирования с нужным количеством кода, чтобы показать читателю, что я имею в виду. На самом деле, я могу найти много других вопросов, подобных моему, не не по теме. Если я ошибаюсь, дайте мне знать, какое правило я нарушил, и я отредактирую.   -  person user3685285    schedule 09.03.2016
comment
это не о каком-то правиле - мне это просто не кажется хорошим вопросом или подходящим для ТАК - кстати: только закрытое голосование от меня - отрицательное голосование - нет - я честно не знаю, что еще расскажу вам, что я сделал в своем первом комментарии выше   -  person Random Dev    schedule 09.03.2016
comment
Хорошо, я не согласен с тем, что это плохо подходит для SO, но неважно.   -  person user3685285    schedule 09.03.2016
comment
Возможно, вы захотите это проверить. Кажется, это связано: stackoverflow.com/questions/2854145/   -  person Ringil    schedule 09.03.2016


Ответы (1)


F # не упрощает создание циклических ссылок. Меня немного смущает ваше утверждение, что C # и Java позволяют вам «объявлять, но не определять» класс; в этих языках нет концепции прямого объявления, как в C ++, и единственная причина, по которой это есть в C ++, - это поддержка модели компиляции на основе заголовков / единиц перевода, которой, к счастью, нет в C # и Java.

Так или иначе. Чтобы пойти дальше, я предлагаю вам прочитать Циклические зависимости - зло и, возможно, исключить общий верхний уровень type для ваших 2 классов, чтобы им не нужно было ссылаться друг на друга. F # допускает циклические ссылки, но старайтесь не работать против языка.

person Asik    schedule 10.03.2016