Я пытаюсь нарисовать список объектов, но не могу заставить его работать. Вторичный вопрос: как создать «цикл цикла» с помощью ELM.Elm drawing over list
У меня есть
type Object a = { a | x:Float, y:Float, vx:Float, vy:Float }
type Car = Object {}
type Cars = [Car]
displayCar = move (car.x,car.y) (filled white (rect 30 20))
displayCars = ?????
Я пытаюсь получить somethign Лика этой работы
collage 100 100 [displayCar (head cars) -- does work
, displayCars cars -- does not work
]
В частности, коллаж имеет несколько вещей, он должен построить:
[ filled pongGreen (rect gameWidth gameHeight)
, displayObjHouse (game.houses !! 0) -- so ugly code
, displayObjHouse (game.houses !! 1) -- so ugly code
, displayObjHouse (game.houses !! 2) -- so ugly code
, displayObjHouse (game.houses !! 3) -- so ugly code
, displayObjHouse (game.houses !! 4) -- so ugly code
, displayCars cars -- does not work
]
Это не работает, когда yuo рисует разные объекты. Прояснить. У меня есть еще один список, чтобы показать, скажем, это еще один список автомобилей. основной = коллаж 400 400 [(дисплейCars некоторые автомобили)] ++ [дисплейCars некоторыеCars2] это не работает. не знаю почему. Кроме того, это не два набора машин, которые мне нужно показать, но другие типы объектов :(Я наткнулся на карту, но не смог заставить ее работать – user1639926
Похоже, что здесь есть порядок оценки. Работает ли она, если вы делаете 'main = collage 400 400 ([(displayCars someCars)] ++ [displayCars someCars2])'? – Joe
Кроме того, система типа Elms не позволит вам иметь список, содержащий два разных типа. Однако, если у вас есть функции отображения для каждого типа вы должны иметь возможность использовать 'map' для преобразования каждого в' [Form] ', а затем объединить эти списки. – Joe