Это не легко сделать в Swift (хотя и возможно), но это неплохо: возможность перебирать свойства объекта и изменять (изменять) их без прямой ссылки на свойство с помощью Впоследствии имя может легко привести вас в замешательство для вас или другого разработчика, когда вы пытаетесь выяснить, почему свойство объекта изменилось.
Гораздо лучше вместо этого сделать эту операцию явной и правильно назвать ее. Примерно так:
extension Object {
func doubledPrice() -> Object {
return Object(
price1: price1 * 2,
price2: price2 * 2,
price3: price3 * 2,
price4: price4 * 2,
name: name, //we can't double a string
type: type,
quantitySold: quantitySold, //I've named the func assuming you won't double the quantitySold, obviously if that's not the desired behaviour then this needs to change
dateIntroduced: dateIntroduced //can't double a date
)
}
}