Почему generateTokenForAccount
возвращает свой ввод? Это обманчиво, потому что это приводит вас к мысли, что он создает новый, измененный объект, тогда как на самом деле это не так; вместо этого он мутирует переданный объект. Он должен возвращать Unit
, чтобы указать это:
def generateTokenForAccount(account: Account) {
account.setAccountToken(UUID.randomUUID().toString())
}
Теперь тип подсказывает, что вы можете просто использовать эффект в последовательности:
def registerChildminderAccount(childminderAccount: ChildminderAccount): Boolean = {
generateTokenForAccount(childminderAccount)
childminderAccountDAO.save(childminderAccount)
mailerService.requestChildminderConfirmation(childminderAccount)
}
Также, когда у вас есть if foo { return true } else { return false }
, это эквивалентно return foo
. В Scala последнее выражение в блоке возвращается автоматически, поэтому вы даже можете удалить ключевое слово return
.