Я создаю сервер API в Perl 6, используя платформу Cro!Целью этого API является обслуживание данных о Pokemon и предоставление конечных точек для генерации Pokemon на основе входных данных.Одним из факторов генерации является gender
, в моей базе данных PostgreSQL каждая ссылка на Pokemon имеет столбец gender-ratio
, который содержит значение JSON, похожее на это:
"gender-ratio": {
"default": {
"Male": 0.25,
"Female": 0.75
},
"alolan": {
"Male": 0.25,
"Female": 0.75
}
},
Вы заметите, что у меня есть два ключатам называются default
и alolan
, это потому, что Pokemon может иметь различные формы, но это в основном не имеет отношения к этому вопросу - важны фактические значения соотношения полов.Вот как выглядит мой метод генерации:
method select-gender($pokemon, $form = 'default') {
enum GENDER ( <Male Female> );
return GENDER.pick;
}
По умолчанию pick
является случайным, в данном случае 50/50.Однако я хотел бы иметь возможность взвешивать случайность каждого варианта, основываясь на результатах отношения, возвращенного из базы данных.Одна из моих идей состояла в том, чтобы заполнить перечисление GENDER
результатами запроса к базе данных, чтобы это выглядело более точно для конкретного примера:
enum GENDER ( <Male Female Female Female> );
Если у кого-то еще нет более хороших идей о динамическом измененииповедение pick
основано на результате моего оператора SELECT
?