В Rails можно было бы использовать:
returning Person.create do |p|
p.first_name = "Collin"
p.last_name = "VanDyck"
end
Избегая этого:
person = Person.create
person.first_name = "Collin"
person.last_name = "VanDyck"
person
Я думаю, что первый способ чище и менее повторяющийся. Я обнаружил, что создаю этот метод в своих проектах Scala:
def returning[T](value: T)(fn: (T) => Unit) : T = {
fn(value)
value
}
Я знаю, что он имеет несколько ограниченную полезность из-за тенденции объектов быть неизменными, но, например, при работе с Lift использование этого метода в классах Mapper работает довольно хорошо.
Есть ли в Scala аналог «возврата», о котором я не знаю? Или есть аналогичный способ сделать это в Scala, более идиоматичный?