Java-лямбда-функция имеет ограничение по времени / операциям? - PullRequest
0 голосов
/ 15 декабря 2018

Я пишу простой навык similart для примера фактов о самолете java, и у меня есть два странных поведения:

1) один и тот же код в одном намерении работает правильно, но в другом вызывает ошибку;

2) Я не могу удалить элемент из открытого статического списка!Я постараюсь объяснить лучше с очень близким примером.У меня есть два Интента, которые мы можем назвать: - ActionIntent;- StopIntent.

Первое намерение извлекает список (типа List), полученный из класса Constants, и возвращает атрибут случайного CustomObject - это работает правильно.Затем он должен установить для объекта атрибуты сеанса и удалить его из списка, поскольку в следующий раз ответ должен быть вторым атрибутом последнего CustomObject плюс первый атрибут нового CustomObject.Имеет ли это смысл?

Вот код:

// this row works correctly on the other intent
Map<String, Object> sessionAttributes = input.getAttributesManager().getSessionAttributes();

CustomObject last=(sessionAttributes.get("last")!=null) ? (CustomObject)sessionAttributes.get("last") : null;

List<CustomObject> allObjects = MAPPER.convertValue(Constants.getAllObjects(), List.class);

int index = new Random().nextInt(tutti.size());

CustomObject new = allObjects.get(index);

// a simple method that contains allObjects.remove(index) because it didn't work here but also this cause an error
Constants.removeCustomObjectFromList(index);

sessionAttributes.put("ultimoNome", nuovoNome);

String title = Constants.SKILL_TITLE;
String primaryText =new.getTrue();
String secondaryText =(last!=null) ?last.getFalse() : "";

String speechText = "" + secondaryText + " "+primaryText + "?";

return input.getResponseBuilder()
.withSpeech(speechText)
.withSimpleCard(title, primaryText)
.withReprompt(speechText)
.build();

Если я закомментирую строки, связанные с sessionAttribute и Constants.removeCustomObjectFromList, он будет работать правильно, но, как я уже сказал,ссылка на sessionAttribute работает правильно в другом намерении, и я должен удалить CustomObjects из моего начального списка, потому что пользователь должен слушать два раза одно и то же!Может кто-нибудь сказать мне, где найти хорошую информацию по этому вопросу?

1 Ответ

0 голосов
/ 18 декабря 2018

https://ask -sdk-for-nodejs.readthedocs.io / en / latest / Managing-Attributes.html

Выше приведены официальные документы.Это может быть немного трудно понять пару вещей из-за отсутствия подробного объяснения, но по большей части все, что вам нужно, есть.Что касается вашей проблемы, я не знаю, является ли это единственной причиной, но я не думаю, что getAttributesManager () - это функция, если только вы это не определили.Ваш код:

Map<String, Object> sessionAttributes = input.getAttributesManager().getSessionAttributes();

Можете ли вы попробовать:

Map<String, Object> sessionAttributes = input.attributesManager.getSessionAttributes();

вместо?

...