2016-03-09 48 views
0

F#中有一種方法可以聲明一個類,但並不像C#或C++或Java或幾乎任何其他語言那樣定義它,以便我們可以避免使用和關鍵詞?我有兩個引用海誓山盟相當大的班,我不希望把他們都在這樣同一個文件:聲明,但沒有定義F#類

type Type1 = 
    // definitions 

and Type2 = 
    //definitions 
+3

AFAIK你運氣不好 - 當然問題是爲什麼你需要兩個相互引用的巨大類;) – Carsten

+0

順便說一句:一種方法是將需要的部分重構成接口'Interface1'和'Interface2' - 你可以在一個文件中定義這些文件,然後在你喜歡的任何地方實現它們 – Carsten

+0

我非常想給這個問題投下反對票,因爲你甚至沒有顯示你尋找一個功能性的解決方案,甚至沒有顯示任何代碼這件事。 –

回答

1

F#不作任何更容易有比循環引用。我對你的陳述感到困惑,C#和Java允許你「聲明但不定義」一個類;這些語言沒有像C++那樣的前向聲明的概念,而C++的唯一原因就是支持其基於頭/基於單元的編譯模型,C#和Java感謝地沒有。

無論如何。爲了進一步,我建議你閱讀Cyclic dependencies are evil,並可能爲你的2個課程考慮一個共同的頂級類型,因此它們不需要相互引用。 F#允許循環引用,但儘量不要違背語言。

相關問題