Этот код в Lua будет применять функцию к значениювысшего порядка «методы» в Lua
function Apply(f, value)
return f(value)
end
Затем я могу использовать его, как это применять произвольные функции вызовов на мой объект игры, как так
Apply(Draw, GameObject)
Apply(Update, GameObject)
можно ли вместо этого делать то, что я бы, наверное, неправильно, вызовите метод более высокого заказ
function GameObject:Apply(f)
return self:f()
end
то, что я в конце концов, изнуренный t, чтобы сделать, есть таблица GameObjects, которую я могу вызывать Методы в пакетном режиме. Поэтому, используя эту концепцию более высокого порядка, которая может даже не существовать, я бы создал код, который делает следующее.
...
--Create the batch object with three bullets in it
BatchGameObjects = BatchGameObject:new(Bullet1, Bullet2, Bullet3)
--Call equivelent to
--Bullet1:DrawMethod()
--Bullet2:DrawMethod()
--Bullet3:DrawMethod()
--Bullet1:UpdateMethod()
--Bullet2:UpdateMethod()
--Bullet3:UpdateMethod()
BatchGameObjects:Apply(DrawMethod)
BatchGameObjects:Apply(UpdateMethod)
Спасибо, что отлично работало. Одна из потенциальных возможностей для других, использующих это, - это использовать функцию, которую вы хотите передать ей как строку. IE BatchGameObjects: Apply ("Draw"). Благодаря!!! – user514156
@ user514156, да, вот что я имел в виду, когда я сочувствовал «имени». –