Когда вы проверяете литеральную строку в списке или массиве, она работает хорошо.
Но когда вы проверяете строку concat в списке или массиве, она возвращает неверный результат.
И если сравнивать буквальную строку и строку concat напрямую, они считаются идентичными.
Я потерпел неудачу на конвейере Jenkins с этим кодом, и я попробовал на Groovy 1.8.9 напрямую, результат был тот же.
В этом коде issue_file = "issue-${signal_dc_key}.json"
, затем contains
возвращает false
def issued_list = ["names":["issue-something-DC-VV.json","issue-else-DC-VV.json"]]
def signal_dc_key = "something-DC-VV"
def issue_file = "issue-${signal_dc_key}.json"
println issue_file // issue-something-DC-VV.json
println issue_file == "issue-something-DC-VV.json" // true
println issue_file == "issue-${signal_dc_key}.json" // true
println issued_list["names"].contains("${issue_file}") // false
println issued_list["names"].contains(issue_file) // false
println issued_list["names"].contains("issue-something-DC-VV.json") // true
В этом коде issue_file = "issue-something-DC-VV.json"
, contains
возвращает true
.
def issued_list = ["names":["issue-something-DC-VV.json","issue-else-DC-VV.json"]]
def signal_dc_key = "something-DC-VV"
def issue_file = "issue-something-DC-VV.json"
println issue_file // issue-something-DC-VV.json
println issue_file == "issue-something-DC-VV.json" // true
println issue_file == "issue-${signal_dc_key}.json" // true
println issued_list["names"].contains("${issue_file}") // false
println issued_list["names"].contains(issue_file) // true
println issued_list["names"].contains("issue-something-DC-VV.json") // true