Ниже приведен ряд шагов, которые я предпринял в оболочке sh. Оболочка демонстрирует проблему
String.split()
=> String[]
, как и ожидалось в Java SDK. Когда я оцениваю это как часть продолжающегося выражения: changedDirs.split('\r\n').collect{ ... }
my collect
выполняется 1 раз с пустым it
. Позвольте мне допустить: этот код работает на сервере Jenkins, и, как известно, Jenkins, например, имеет диалект из groovy. Но, независимо от того, когда я тестирую его локально с помощью groovysh, я действительно получаю то, чего не ожидал: []
оценивается как truthy
, если это происходит от String.split()
Итак: может кто-нибудь объяснить:
- Как этот groovy код, приведенный ниже, производит
truthy
для String.split()
, а не для основы c empty []
- Дженкинс делает что-то странное?
groovy:000> [] ? 'true' : 'false'
===> false
groovy:000> changedDirs = ''
===>
groovy:000> changedDirs.split('\r\n')
===> []
groovy:000> changedDirs.split('\r\n') ? true : false
===> true
groovy:000> result = changedDirs.split('\r\n')
===> []
groovy:000> result ? true : false
===> true
groovy:000> result.class
===> class [Ljava.lang.String;
groovy:000> [] as String[] ? true : false
===> false
groovy:000>