Сохраняйте объекты в списке и рисуйте их в формах 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)))