2
このエラーについては説明できません(F#4.1、VS 2017)。F#継承されたコンストラクタの継承されたプロパティ値を代入するパラメータリスト
共通コード:
open Eto.Forms
type MyCommand() as this =
inherit Eto.Forms.Command()
do
this.MenuText <- "C&lick Me, Command"
this.ToolBarText <- "Click Me"
this.ToolTip <- "This shows a dialog for no reason"
this.Shortcut <- Application.Instance.CommonModifier ||| Keys.M
次の宣言は、F#のエディタによって受け付けられません。メニューの初期化中に検出されたエラーメッセージは、「名前付き引数は、他のすべての引数の後に現れなければなりません」されています
type MyForm1() =
inherit Eto.Forms.Form(
Title = "Eto Tests"
, ClientSize = Eto.Drawing.Size(600, 400)
, Menu = seq {yield new MyCommand()} |> Seq.fold (fun (mb:MenuBar) c -> mb.Items.Add(c) |> ignore; mb) (new MenuBar())
)
次の宣言ではなく、エラーなしで動作します:事前に
type MyForm1() =
inherit Eto.Forms.Form(
Title = "Eto Tests"
, ClientSize = Eto.Drawing.Size(600, 400)
, Menu = let m = seq {yield new MyCommand()} |> Seq.fold (fun (mb:MenuBar) c -> mb.Items.Add(c) |> ignore; mb) (new MenuBar()) in m
)
感謝を。
「let m = ... in ...」の構文は、ここでは一対の括弧のように動作します。あなたのコードで '' Menu =(seq {yield ...(new MenuBar())) ''を使ってみてください。 – dumetrulo