сам справочное определение структуры?

Создайте новый объект, используя 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)

126
задан Community 14 April 2018 в 22:16
поделиться

4 ответа

Очевидно Ячейка не может содержать другую ячейку, поскольку это становится бесконечной рекурсией.

Однако CAN Ячейки содержат указатель на другую ячейку.

typedef struct Cell {
  bool isParent;
  struct Cell* child;
} Cell;
174
ответ дан Jonathan Leffler 24 November 2019 в 00:52
поделиться

В 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 до последней строки:-), Это - то, как я помню то правило.

26
ответ дан paxdiablo 24 November 2019 в 00:52
поделиться

Есть способ обойти это:

struct Cell {
  bool isParent;
  struct Cell* child;
};

struct Cell;
typedef struct Cell Cell;

Если вы объявляете это так, он правильно сообщает компилятору, что struct Cell и plain-ol'-cell - это одно и то же. Таким образом, вы можете использовать Cell как обычно. Тем не менее, структура Cell по-прежнему должна использоваться внутри самого исходного объявления.

12
ответ дан 24 November 2019 в 00:52
поделиться

С теоретической точки зрения, языки могут поддерживать только самореферентные структуры, а не самодостаточные.

16
ответ дан 24 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

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