R Highcharter: выделите / отмените выделение столбца в гистограмме, нажав

Точный механизм зависит от платформы. Но наиболее распространенным механизмом является то, что вызывающий абонент выделяет пространство в своем стеке для возвращаемой структуры и передает адрес этого пространства в качестве дополнительного аргумента, обычно перед всеми реальными аргументами.

На многих платформах, структуры, достаточно маленькие, чтобы вписаться в регистр, будут возвращены, как если бы они были единственным значением. Это применимо к x86-64 для структуры, состоящей из двух 32-разрядных int s, поскольку они могут быть возвращены в одном 64-битном регистре. Как большая структура может быть обработана таким образом, будет варьироваться от платформы к платформе.

Стоимость передачи больших структур по стоимости может быть улучшена с помощью копирования. Если, например, вы пишете

struct MyThingy blob = blobMaker();

, компилятор, скорее всего, передаст blobMaker адрес переменной blob вместо выделения временной переменной, а затем скопирует временное значение в blob после функция возвращается. Вызываемая функция также может избежать копирования:

struct MyThingy blobMaker(void) {
  struct MyThingy retval;
  // ...
  retval.member1 = some_calc(42);
  // ...
  retval.member2 = "Hello";
  // ...
  return retval;

Здесь компилятор мог бы не выделять retval в стек стека вызываемой функции, а вместо этого просто использовать хранилище, переданное в невидимом аргумент напрямую, тем самым избегая копирования на return. Комбинация этих двух оптимизаций (когда это возможно) делает возвращающие структуры почти бесплатными.

Стандарт C ++ обеспечивает эти оптимизации, явно разрешая их даже в тех случаях, когда разрешенные копии могли вызвать побочные эффекты в копии объекта конструктор. (Очевидно, этот случай не существует в C.)

0
задан Vlad 20 January 2019 в 06:20
поделиться

1 ответ

Вы ищете свойство plotOptions.column.allowPointSelect : API - allowPointSelect

Просто обновите строку 25 в своем коде:

hc_plotOptions(series = list(stacking = FALSE, allowPointSelect = TRUE, events = list(click = canvasClickFunction, legendItemClick = legendClickFunction))) %>%

Чтобы выбрать более 1 точки, удерживайте нажатой кнопку ctrl .

0
ответ дан raf18seb 20 January 2019 в 06:20
поделиться
Другие вопросы по тегам:

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