Когда это хороший для использования встроенного языка сценария как Lua

Вы можете построить карту с индексом type. Это можно сделать с помощью простого цикла или с помощью array_reduce :

$map = array_reduce($jsonData['data'], function ($map, $entry) {
  $map[$entry['type']] = $entry['data'];
  return $map;
}, []);

Затем используйте его просто так:

$cars = $map['motorised:cars'];
$vans = $map['motorised:vans'];
$bikes = $map['motorised:bikes'];

Демо : https://3v4l.org/8foHN

6
задан Clifford 1 June 2011 в 06:57
поделиться

8 ответов

Когда Вам нужны конечные пользователи, чтобы смочь определить/изменить систему, не требуя системы к переписанному. Это используется в играх, чтобы позволить расширения или позволить основному игровому механизму оставаться неизменным, в то время как позволяют содержанию быть измененным.

13
ответ дан 8 December 2019 в 02:46
поделиться

Встроенные языки сценариев работают хорошо на хранение конфигурационной информации также. В последний раз я проверил, семейство Mozilla все использование JavaScript для их информации о конфигурации.

Затем они являются великими для разработки плагинов. Можно создать пользовательский API для представления сменным разработчикам, и сменные разработчики получают большую свободу от наличия всего языка для работы с.

Другой - когда плоские файлы не достаточно выразительны. Если Вы захотите записать управляемые данными приложение, где поведение параметризовано, Вы станете действительно усталыми от длинных строк условного тестирования на комбинации конфигурации. Когда это происходит, Вы - более обеспеченная запись правил И их оценки в Вашу конфигурацию.

Эта тема получает некоторое покрытие в книге Программист Pragramtic.

8
ответ дан 8 December 2019 в 02:46
поделиться

Быстрая разработка для приложения с ограничениями реального времени. Компьютерные игры являются одним из них ;-)

2
ответ дан 8 December 2019 в 02:46
поделиться

Lua:

  • Легкий вес
  • Легкий интегрироваться, даже в asynchronized среде, такой как игра
  • Легкий учиться для коллектива непрограммиста, такого как интеграторы, разработчики и художники

Так как игры обычно требуют всех тех качеств, Lua главным образом используется там. Другая цитата могла быть любым приложением, для которого нужна некоторая функциональность сценариев, но разработчики часто выбирают немного более тяжелое решение для веса, такое как .NET или Python.

3
ответ дан 8 December 2019 в 02:46
поделиться

a scripting language like Lua can also be used if you have to change code (with immediate effect) while the application is running. one may not see this in wow, because as far as i remember the code is loaded at the start (and not rechecked and reloaded while running).

but think of another example: webserver and scripting language - (thankfully) you can change your php code without having to recompile apache or restart apache.

steve yegge did that thing for his own mmorpg engine powering wyvern, using jython or rhino and javascript (can't remember). he wrote the core engine in java, but the program logic in python/javascript.

the effect of this is:

  • he doesn't have to restart the core engine when changing the scripts, because that would disconnect all the players
  • he can let others do the simpler programming like defining new items and monsters without exposing all the critical code to them
  • sandboxing: if an error happens inside the script, you may be able to handle it gracefully without endangering the surrounding application
3
ответ дан 8 December 2019 в 02:46
поделиться

Это - допустимое решение, если Вы хотите позволить третьим лицам разрабатывать плагины или модификации для Вашего программного обеспечения.

Вы могли реализовать API на любом языке, который Вы используете, но язык сценария как LUA имеет тенденцию быть более простым и доступным для случайных разработчиков.

2
ответ дан 8 December 2019 в 02:46
поделиться

В дополнение к сценариям и упомянутым случаям конфигурируемости, я просто заявил бы, что Lua+C (или Lua+C ++) являются идеальной парой для любой разработки программного обеспечения. Это позволяет делать интерфейс механизма/использования, где механизм сделан в C/C++ и поведении или настройке, сделанной в Lua.

Какао OS X имеет Objective C (C и амальгама Smalltalk, где язык изменяется строкой). Я нахожу Lua+C подобный, только изменения языка исходным файлом, чтобы мне лучшая абстракция.

Причины, почему Вы не хотели бы использовать Lua, также примечательны. Поскольку это едва имеет хороший отладчик. С другой стороны людям едва, кажется, нужен один также.:)

2
ответ дан 8 December 2019 в 02:46
поделиться

В дополнение ко всем отличным причинам, упомянутым другими, встраивание Lua в C очень полезно, когда вам нужно манипулировать текстом , работать с файлами, или просто нужен язык более высокого уровня. Lua обладает множеством изящных функций (таблицы, функции являются первоклассными значениями, много других полезных вещей). Кроме того, хотя lua не так быстр, как C или C ++, он довольно быстр для интерпретируемого языка.

0
ответ дан 8 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: