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

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

21 ответов

18 просмотров

Двумерный массив называется 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
Иван ты сильно хардкодишь, у тебя должен был быть ...

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

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Карта сайта