С помощью scala можно ли отменить применение кортежа и запустить над ним карту?

У меня есть некоторые финансовые данные, собранные в списке[ (Int, Double )], вот так:

val snp = List((2001, -13.0), (2002, -23.4))

С помощью этого я написал формулу, которая преобразует список с помощью карты в другой список (для демонстрации страхования жизни инвестиционного уровня ), где убытки ниже 0 преобразуются в 0, а прибыль выше 15 преобразуются в 15, вот так:

case class EiulLimits(lower:Double, upper:Double)
def eiul(xs: Seq[(Int, Double)], limits:EiulLimits): Seq[(Int, Double)] = {
    xs.map(item => (item._1, 
                    if (item._2 < limits.lower) limits.lower 
                    else if (item._2 > limits.upper) limits.upper 
                         else item._2
}

Можно ли как-то извлечь значения кортежа внутри этого, чтобы мне не приходилось использовать неуклюжие обозначения _1 и _2?

-121 ---1811857 ​​- Spring Правила наследования @TransactionalУ меня есть набор bean-компонентов @Service, которые наследуют основные функции абстрактного класса. Я пометил каждую из конкретных служб подкласса -с помощью @Service и @Transactional. Абстрактный суперкласс...

У меня есть набор @Servicebean-компонентов, которые наследуют основные функции абстрактного класса. Я пометил каждую конкретную услугу подкласса -с помощью @Serviceи @Transactional. Абстрактный суперкласс содержит общедоступный метод точки входа для каждой из этих служб. Другими словами, у меня есть что-то похожее на следующее:

abstract class AbstractService {

    public void process() {
        // Do common initialisation code here
        processSpecific();
        // Do common completion code here
    }

    abstract protected void processSpecific();
}


@Service @Transactional
public class FirstSpecificService extends AbstractService {
    protected void processSpecific() {
        // Do specific processing code here
    }
}


@Service @Transactional
public class SecondSpecificService extends AbstractService {
    protected void processSpecific() {
        // Do different specific processing code here
    }
}

Конкретный код в каждой конкретной службе подкласса -делает несколько вызовов уровня DAO для внесения изменений в базу данных, для которой REQUIREDявляется типом распространения транзакций..

Теперь со службами, определенными, как указано выше, я обнаружил, что не было текущей транзакции ни в одном из кодов этих конкретных служб подкласса -, и каждый вызов уровня DAO создавал новую транзакцию, выполняя изменения, совершение транзакции и возврат.

Однако, если я аннотирую абстрактный супер-класс с помощью @Transactional,затем транзакция создается должным образом, и все вызовы подпрограммы -на уровень DAO участвуют в текущей транзакции.

Итак, мой вопрос: каковы правила наследования поведения @Transactional? Почему Spring не использует @Transactionalдля конкретных служб подкласса -, которые он фактически создает? Должен ли @Transactionalбыть в суперклассе -в этом случае, потому что именно там находится общедоступный метод точки входа -?

17
задан Daniel Daranas 28 August 2013 в 16:37
поделиться