Сохраняйте объекты в списке и рисуйте их в формах Windows, используя F#

В настоящее время я изучаю F# из C# фона, и я сделал проект, аналогичный этому, когда я изучил C#, поэтому я пытаюсь сделать то же самое в F#, то, что я хочу создать, это очень простой редактор 2D-графики, использующий формы Windows и F#, и я столкнулся с некоторыми неприятностями.

То, как я это делаю (как я это делал в C#), это создание различных фигур с помощью кнопок меню, например, я нажимаю "квадрат" в моем меню и хочу, чтобы программа создала квадратный объект из предопределенного типа, добавьте это список всех других квадратных объектов, а затем заново нарисовать форму (сделать недействительным).

Звучит довольно просто для опытного программиста F#, я полагаю, в любом случае вот что у меня есть.

У меня есть свой квадрат типа

type square(x : float, y : float) =
    let length = 10
    let height = 10

и у меня есть мое меню и форма и все

let form =
    let temp = new Form(Width= 900, Height = 500,Text="Graphics Editor")
    temp.BackColor <- Color.White
    let menu = new MenuStrip()
    let create = new ToolStripDropDownButton("Create")  // Menu
    ignore(menu.Items.Add(create))
    let square = create.DropDownItems.Add("Square")

и пустой список квадратов

let listOfSquares = []

Теперь к проблеме.

Я хочу создать квадрат, а затем добавить его в пустой список квадратов, когда нажимаю на пункт меню Квадрат. Что-то вроде этого

square.Click.Add(fun _ -> let sq = circle(3.0, 4.0), sq :: listOfSquares |> ignore) //I know the syntax here is off but I hope it shows what I'm tryng to acomplish

1 ответ

Если вы хотите изменить список, попробуйте использовать ResizeArray, F# списки неизменны.

let listOfSquares = ResizeArray()

square.Click.Add(fun _ -> listOfSquares.Add(circle(3.0, 4.0)))
Другие вопросы по тегам