public String extractName(Element building) {
return this.selectors
.getName()
.map(cssSelector -> {
Elements buildingNameElement = building.select(cssSelector);
return buildingNameElement.text();
})
.orElse("N/A");
}
Это то, для чего Optional.map
. Когда вы делаете return
внутри лямбды, вы возвращаетесь только из лямбды, а не из внешнего метода. Таким образом, вышеприведенное использует текст элемента имени здания, если getName
вернул имя / селектор. И возвращает N/A
, если нет.
Если вы согласны с более сжатым синтаксисом и меньшим количеством именованных переменных, вы можете использовать следующее:
return this.selectors
.getName()
.map(cssSelector -> building.select(cssSelector).text())
.orElse("N/A");
Отказ от ответственности: у меня нет JSoup на моем компьютере, поэтому у меня нет т проверено. Пожалуйста, прости, если есть опечатка, и доложи.
Это должно сработать:
function run_info() {
# Prepend "info" to the command line and run it.
BUFFER="info $BUFFER"
zle accept-line
}
# Define a widget called "run_info", mapped to our function above.
zle -N run_info
# Bind it to ESC-i.
bindkey "^[i" run_info
Просто вырезайте и вставляйте это в оболочку, чтобы попробовать, и добавьте в свой .zshrc для постоянного эффекта.
Перефразируя код Общая идея заключается в том, что мы сначала определяем виджет с именем «run_info», реализованный с помощью функции с тем же именем. Он берет буфер командной строки и добавляет «info» в начало. Затем он принимает командную строку (аналогично нажатию Enter ). Наконец, виджет сопоставляется с сочетанием клавиш.
Вы можете прочитать справочную страницу zshzle (1) для получения дополнительной информации о том, как этот материал работает.