Извините за ужасный заголовок, но я не могу найти приемлемый способ задать этот вопрос, потому что я не знаю, как ссылаться на конструкции кода, на которые я смотрю.
Взглядв этом файле: https://github.com/Hexworks/caves-of-zircon-tutorial/blob/master/src/main/kotlin/org/hexworks/cavesofzircon/systems/InputReceiver.kt
Я не понимаю, что здесь происходит:
override fun update(entity: GameEntity<out EntityType>, context: GameContext): Boolean {
val (_, _, uiEvent, player) = context
Я могу понять некоторые вещи.
Мы отменяем обновлениефункция, которая определена в классе Behavior, который является суперклассом этого класса.
Функция обновления принимает два параметра.GameEntity с именем entity и GameContext с именем context.
Функция возвращает логический результат.
Однако я совсем не понимаю следующую строку.Просто откройте и закройте круглые скобки, два подчеркивания в качестве первых двух параметров, а затем присваивание аргументу контекста.Для чего мы присваиваем значение контекста?
Основываясь на поведении IDE, очевидно, что закрывающие и закрывающие скобки связаны с конструктором для GameContext.Но я бы не знал, что иначе.Я также не понимаю, что означает подчеркивание в списке аргументов.
И, наконец, я прочитал о ключевом слове дисперсии на сайте объявлений "out", но я не совсем понимаю, что это такоезначит здесь.У нас есть GameEntity,Итак, насколько я понимаю, это означает, что этот метод производит EntityType, но не потребляет его.Как это продемонстрировано в этом коде?