Всем привет. Вопрос такой. Вот есть в виджетах колонки с

игроками. Я их в графе оформил как массивы по колонкам, но так неудобно записывать в них значения. Есть какие-то варианты создать либо двумерный массив, либо как-то обойтись одним SetText?

21 ответов

13 просмотров

Двумерный массив называется map

Ivan Kurulyuk
Двумерный массив называется map

Map != двумерный массив. Двумерный массив может как угодно хранить значения, а map а) хранит их парами b) эти пары представлены как ключ-значение. Это разные структуры данных. Ты не можешь в мапе хранить позицию в виде row-column, потому что keys в map должны быть уникальны.

Пусть игрок хранит своё имя сам как приватную переменную, имеет публичный метод getName и через ForEach вызываешь также публичный SetName. Если все игроки в одном контейнере, то вытягиваешь из контейнера ноду GetAllChildren, которая возвращает тебе все объекты, которые содержатся под контейнером одним массивом. Если там не только игроки, то обрабатываешь возвращаемый массив так, как тебе нужно(кастишь или по does implement interface). Я не знаю, должны ли у тебя они меняться местами или один раз делаешь расстановку, но судя по исходным данным, моя реализация выглядит более лаконичной.

Ivan-Ptentsov Автор вопроса
Виталий Медведев
Пусть игрок хранит своё имя сам как приватную пере...

нет, они не должны меняться местами. Но их может быть больше или меньше

Виталий Медведев
Пусть игрок хранит своё имя сам как приватную пере...

А зачем иметь приватное имя, но иметь паблик гет/сет, которые явно никак не используют дополнительную логику, а просто превращают прайват переменную в паблик?) Вопрос не серьезный, а философский о подходе к «инкапсуляции»

Ivan Ptentsov
столкнулся с этим

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

Ivan-Ptentsov Автор вопроса
Виталий Медведев
Если нужен прям двумерный массив, можешь сделать к...

да не, мне как раз именно get all children подходит как нельзя кстати

Богдан Karabinskyi
А зачем иметь приватное имя, но иметь паблик гет/с...

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

На самом деле очень справедливый комментарий выше, публичный сэттер без дополнительной логики и публичная переменная концептуально ничем друг от друга не отличаются И очень хорошо замечено, что подобный публичный сеттер как раз таки ничего не гарантирует

Иван ты сильно хардкодишь, у тебя должен был быть один Text box с логикой и далее ты его бы поместил например в wrap box, ты нарушаешь ООП подход, и у тебя вероятно будут траблы с UI на разных устройствах, если ты в BP начинаешь делать некие однотипные штуки - значит подход не верный.

Ivan Ptentsov
а где это включается?

У большинства переменных и функций класса есть спецификатор доступа, он в окне details меняется. Бывает private, public и protected. У переменных нет protected, именно в анриле.

Виталий Медведев
Map != двумерный массив. Двумерный массив может ка...

Согласен. Мне кажется, ему массив структур лучше организовать

Ivan-Ptentsov Автор вопроса
Dethlord
Иван ты сильно хардкодишь, у тебя должен был быть ...

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

Если для такой задачи хочешь применить подобие массива и если я правильно понял по первому скрину - может подойти Map, у которой первое значение - команда (например, enum), а второе - обычный массив имён (строк)

Ivan-Ptentsov Автор вопроса
Dethlord
Иван ты сильно хардкодишь, у тебя должен был быть ...

Спасибо за совет, я его реализую на днях

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

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
Ну, так - шо, грамодяне-эрленгяне? Все - готовы подписаться под словами "гуру" на счёт трудности применения POSIX threads и про, конкретно, мьютексы, что "... недопоставишь м...
Wlad
21
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
привет, как сбилдить свифт прогу статически? делаю -Xswiftc -static-executable - получаю такую ошибку: /lib/aarch64-linux-gnu/libc.a(pthread_join_common.o)(.note.stapsdt+0x14...
🦊 Fox 🌸 🌸
6
Карта сайта