Ansible - зарегистрированные переменные с использованием модуля отладки [duplicate]

Все объекты гарантированно имеют метод .equals(), поскольку Object содержит метод, .equals(), который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. С помощью ==) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals() и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.

Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==, это был бы прекрасный способ. Строки сами не делают.

8
задан techraf 1 December 2017 в 01:23
поделиться

2 ответа

Чтобы получить первый элемент списка:

- debug:
    msg: "First item: {{ ansible_processor[0] }}"

Или:

- debug:
    msg: "First item: {{ ansible_processor | first }}"
23
ответ дан techraf 16 August 2018 в 01:58
поделиться

Попробуйте это для обычной обработки этой ситуации:

Ссылка: get-first-n-elements-of-a-list-in-jinja2-template-in-ansible

# from list
- debug:
    msg: "First item: {{ ansible_processor[0] }}"
# from output, like 'https://xxx.xx/xxx/xxx.git'
- debug:
    msg: "git repo's name: {{ (item| urlsplit('path')| basename | splitext)[0] }}"
0
ответ дан Cheney 16 August 2018 в 01:58
поделиться
Другие вопросы по тегам:

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