Получить возвращаемое значение в функции лямбда

Интересно .. вы также можете попробовать определить сервер имен в файле /etc/resolv.conf, который должен выглядеть примерно так:

nameserver 10.0.0.50 10.0.0.51
2
задан 13 August 2018 в 14:10

2 ответа

Просто используйте transactionResult:

String primaryKey = dslContext.transactionResult(
  (Configuration c) -> {
    return this.postgresService.insertData(c, table, map);
  });
2
ответ дан 15 August 2018 в 17:04
  • 1
    выше фрагмента кода дает синтаксическую ошибку. – usr_11 14 August 2018 в 13:06
  • 2
    @ usr_11 попробуйте теперь с явным типом c и явным возвратом – diginoise 14 August 2018 в 13:39

Вы можете создать класс-оболочку для хранения восстановленного значения:

class PrimaryKeyWrapper{
    Record primaryKey;

    public void setPrimaryKey(Record primaryKey) {
      this.primaryKey = primaryKey;
    }

    public Record getPrimaryKey() {
     return primaryKey;
    }
  }

И использовать и экземпляр этого класса для сохранения этого значения изнутри лямбда-функции:

PrimaryKeyWrapper primaryKeyWrapper = new PrimaryKeyWrapper();

dslContext.transaction(
c -> {
    Record primaryKey = this.postgresService.insertData(c, table, map);
    primaryKeyWrapper.setPrimaryKey(primaryKey);

});

Наконец, вы можете получить значение извне:

primaryKeyWrapper.getPrimaryKey();
1
ответ дан 15 August 2018 в 17:04

Другие вопросы по тегам:

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