簡體   English   中英

F#:沒有UI(比如WPF)嗎?

[英]F#: is there no UI (like WPF) for it?

我最近在F#上看過一些視頻。 它似乎主要用於服務或類? 我在VS2010 Beta中看不到“F#WPF”應用程序?

F#實際上有一些非常好的構造用於創建事件驅動的UI應用程序,例如First Class EventsObject Expressions ,從構造函數調用屬性setter,例如:

new Form(Text="My Window Title", Width=600, Height=400)

還有很多。

但是,在VS中創建表單設計器會為您的語言重新設置CodeDom。 只要您的語言看起來與C#或VB 完全相同 ,當前CodeDom架構的效果很好; 它不適合生成F#代碼(這來自我現在無法找到的網絡廣播或采訪)。 它還需要部分類,如果我沒記錯的話,在Beta 1的語言中不支持。在第一版中,F#團隊不是專注於設計師支持,而是決定將他們的資源用於增強語言的其他部分,例如異步和並行編程等

這意味着您在F#中創建UI至少有4種選擇:

  • 手動編寫所有UI代碼,這對於簡單的應用程序來說很好;
  • 創建您的F#代碼作為庫來處理“硬件”,如異步和並行代碼,或以計算為中心的代碼,並從C#/ VB調用它;
  • 將您的UI代碼創建為C#/ VB庫,並從F#驅動它並將事件處理委托給F#; 要么
  • 使用DSL計算表達式(monad)來簡化手工構建UI(在此答案中尋找其他鏈接時發現了這一點)。

其中,從F#調用C#UI庫可能是最靈活的,同時仍保留熟悉的范例。 但是,使用計算表達式手動快速構建UI當然值得一看。

你當然可以在F#中創建GUI - 畢竟它只是另一種.NET語言。

Tomas Petricek的書“真實世界的功能編程” (我已經幫助了一點)有各種GUI示例。 如果要查看示例,可以下載源代碼

誠然GUI編程的某些方面不映射非常好,以功能性風格,有參與了很多突變,但有辦法和周圍這意味着:)

使用F#3.0和XAML類型提供程序 ,可以在Visual Studio 11中為F#創建WPF設計器。請參閱http://www.navision-blog.de/2012/03/22/wpf-designer-for-f/

我們出售一個名為F#for Visualization的商業圖書館,用100%F#代碼編寫,並使用WPF從F#代碼中提供帶排版數學的交互式圖形:

替代文字
(來源: ffconsultancy.com

因此,使用WPF在F#中編寫GUI應用程序當然是可能的。

它是一種.NET語言,因此它可以使用.NET類庫。 這意味着Winforms,WPF或您可能在C#中使用的任何其他內容。

根據James Hugard的鏈接更新

目前,F#不會用於GUI,因為它不是最重要的用例。 來自Don Syme的博客

在第一個支持的版本中,我們的目標必須是關注F#的核心優勢,以便使用F#Interactive進行探索性編程,使用數據編程並實現並行和異步組件。

雖然理論上可以使用F#和標准GUI庫,但如果需要GUI,則應使用VB或C#:

F#用戶應使用Visual Studio設計器工具生成C#或Visual Basic代碼,並將這些組件合並到其F#應用程序中。

從長期來看,“生成F#代碼的面向表示的設計器工具”,根據Syme,“絕對可行”。

當然,您也可以使用F#中的所有WPF類。 您可以使用F#創建Windows,控件和其他所有內容,有時我也可以在F#控制台中使用它。

它還沒有像C#或VB那樣緊密集成到Visual Studio中,但正如您在評論中看到的那樣,未來的設計人員支持是可行的。 我想我們必須等到那時(或使用其他工具)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM