Создайте новый объект, используя reduce
, а затем используйте this.setState()
, чтобы окончательно установить state
всего одним простым движением.
Также обратите внимание, что более целесообразно установить состояние только один раз и использовать функцию, предоставляемую реагировать. Установка состояния напрямую, как state[bar] = foo
, является плохой практикой, как сказано в документации
let string = "aaa-bbb-ccc-dd";
const newState = string.split('-').reduce((a, c, i) => {
a[`str${i+1}`] = c;
return a;
}, {})
this.setState(newState)
Очевидно Ячейка не может содержать другую ячейку, поскольку это становится бесконечной рекурсией.
Однако CAN Ячейки содержат указатель на другую ячейку.
typedef struct Cell {
bool isParent;
struct Cell* child;
} Cell;
В C Вы не можете сослаться на определение типа, что Вы создаете скручивание жгутов сама структура. Необходимо использовать имя структуры, как в следующей тестовой программе:
#include <stdio.h>
#include <stdlib.h>
typedef struct Cell {
int cellSeq;
struct Cell* next; /* 'tCell *next' will not work here */
} tCell;
int main(void) {
int i;
tCell *curr;
tCell *first;
tCell *last;
/* Construct linked list, 100 down to 80. */
first = malloc (sizeof (tCell));
last = first;
first->cellSeq = 100;
first->next = NULL;
for (i = 0; i < 20; i++) {
curr = malloc (sizeof (tCell));
curr->cellSeq = last->cellSeq - 1;
curr->next = NULL;
last->next = curr;
last = curr;
}
/* Walk the list, printing sequence numbers. */
curr = first;
while (curr != NULL) {
printf ("Sequence = %d\n", curr->cellSeq);
curr = curr->next;
}
return 0;
}
, Хотя это, вероятно, намного более сложно, чем это в стандарте, можно думать о нем как о компиляторе, зная приблизительно struct Cell
на первой строке typedef
, но не зная приблизительно tCell
до последней строки:-), Это - то, как я помню то правило.
Есть способ обойти это:
struct Cell {
bool isParent;
struct Cell* child;
};
struct Cell;
typedef struct Cell Cell;
Если вы объявляете это так, он правильно сообщает компилятору, что struct Cell и plain-ol'-cell - это одно и то же. Таким образом, вы можете использовать Cell как обычно. Тем не менее, структура Cell по-прежнему должна использоваться внутри самого исходного объявления.
С теоретической точки зрения, языки могут поддерживать только самореферентные структуры, а не самодостаточные.