Работа в кодовой базе со scala, которая хочет, чтобы вы для определенных классов определили своего рода «создать новую версию» - например, если у вас есть класс x (a: int, b: String, c: double).. , у него будет такая функция:
class x( a: Integer, b : String, c : Double) extends CanMakeNew
{
def newValue() = x( a, b, c)
}
Я не контролирую это, но предпочел бы не реализовывать это каждый раз. Или... когда-либо. Есть ли способ в scala с отражением - перебирать значения параметров конструктора? Я могу использовать отражение для просмотра типов параметров, но, поскольку имена параметров не были включены для этого модуля, и я не могу его включить, я не могу сопоставить их с сохраненными значениями в класс. По сути, я ищу в любом случае реализацию такой черты, как:
trait CanMakeNewDoneForMe extends CanMakeNew {
def newValue() {I need the code that goes here}
Итак, есть ли у отражения scala какой-либо способ либо проверить конструктор, либо проверить объект и увидеть «ааа, это был третий параметр в конструкторе»?
newValue()
не может просто вернутьthis
? Содержит лиx
какое-либо изменяемое состояние, из-за которого возврат того же экземпляра может стать проблемой? - person Astrid   schedule 15.07.2019