Как установить несколько свойств класса для свойств одного объекта

Указатели каста на (void*) для печати их на cout - это правильная вещь (TM), чтобы делать на C ++, если вы хотите увидеть их значения.

1
задан Anton Eriksson 18 January 2019 в 13:17
поделиться

2 ответа

Как уже отмечалось, вы могли бы использовать Object.assign , но помните, что он присваивает все из (собственных, перечислимых) свойств возвращаемого объекта по foo.

Чтобы избежать этого, вы можете использовать деструктуризацию:

const {x, y} = foo(arg);
this.x = x;
this.y = y;

Это не приносит вам много пользы, но ...

Вы можете комбинировать подходы:

const {x, y} = foo(arg);
Object.assign(this, {x, y});

... ценой (в теории) временного размещения объектов. (Я говорю «в теории», поскольку движок JavaScript может оптимизировать его. Но я не знаю, как это будет.)


Именно для таких ситуаций было выдвинуто это предложение. . К сожалению, это не получило никакой связи с комитетом. Если бы это предложение было реализовано, вы могли бы сделать это:

// NOT STANDARD JAVASCRIPT (the proposal hasn't even been accepted for Stage 0)
this.{x, y} = foo(arg);
0
ответ дан T.J. Crowder 18 January 2019 в 13:17
поделиться

Предполагая, что foo(arg) возвращает объект только со свойствами x и y:

class xy {
   x: number;
   y: number;

   constructor (arg) {
       Object.assign(this, foo(arg));
   }
}

Если foo может вернуть больше свойств, вам необходимо вручную получить свойства: [ 117]

class xy {
   x: number;
   y: number;

   constructor (arg) {
       const {x, y} = foo(arg);
       Object.assign(this, {x, y});
   }
}
0
ответ дан wilsonzlin 18 January 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: