Действительно Представляет в виде строки. ToLower () всегда выделяют память?

В дополнение к тому, что уже сказал Заключенный, есть и другие проблемы.

app.intent('favoriete kleur', (conv, {color}) => {
  const luckyNumber = color.length;
  const audioSound = 'https://actions.google.com/sounds/v1/cartoon/clang_and_wobble.mp3'; // AoG currently only supports MP3!
  if (conv.user.storage.userName) {
    conv.ask(`${conv.user.storage.userName}, je geluksnummer is `); // Audio should have description
    conv.ask(new Suggestions('Paars', 'Geel', 'Oranje'));
  } else {
    conv.ask(`Je geluksnummer is `);
    conv.ask(new Suggestions('Paars', 'Geel', 'Oranje'));
  }
});
  • AoG в настоящее время поддерживает только MP3 в качестве аудиоформата. См. https://developers.google.com/actions/assistant/responses#media_responses strike>. Извините, я ошибся. Это относится только к медиаответам, а НЕ к встроенному аудио в SSML.
  • Я удалил конкатенации в коде выше. Это противоречиво и делает вещи более трудными для чтения, чем необходимо. (Мнение)
  • Аудиовыход - при выводе не только звукового эффекта, но и текста - должен содержать описание, которое также будет напечатано на экране. Пример в предоставленном коде должен быть в порядке.
  • Но да, причина вашей первоначальной проблемы в том, что вы не закрываете аудио теги. Действия в Google довольно неумолимы в отношении незакрытых тегов.

Надеюсь, что помог.

5
задан Neil C. Obremski 2 February 2009 в 21:27
поделиться

4 ответа

Я ожидаю так, да. Быстрый тест соглашается (но это не доказательство):

string a = "abc", b = a.ToLower();
bool areSame = ReferenceEquals(a, b); // false

В целом попытайтесь работать с компараторами, которые делают то, что Вы хотите. Например, если Вы хотите нечувствительный к регистру словарь, используйте тот:

var lookup = new Dictionary<string, int>(
    StringComparer.InvariantCultureIgnoreCase);

Аналогично:

bool ciEqual = string.Equals("abc", "ABC",
    StringComparison.InvariantCultureIgnoreCase);
10
ответ дан 18 December 2019 в 09:54
поделиться

Строка является неизменным. Строка. ToLower () будет всегда возвращать новый экземпляр, таким образом, генерирующий другой экземпляр на каждом ToLower () вызов.

4
ответ дан 18 December 2019 в 09:54
поделиться

Реализация Java String.toLowerCase () от Sun на самом деле не всегда выделяет новую Строку. Это проверяет, являются ли все символы нижним регистром, и если так, это возвращает исходную строку.

2
ответ дан 18 December 2019 в 09:54
поделиться

[править]
Интернирование не помогает - см. комментарии к этому ответу.

1
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

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