Сохраните таблицу в одной части MigraDoc / PDFsharp

Вы могли бы думать, что можно сделать это для сохранения памяти:

@is_month{qw(jan feb mar apr may jun jul aug sep oct nov dec)} = undef;

print "It's a month" if exists $is_month{lc $mon};

но это не делает этого. Perl все еще присваивает другую скалярную величину каждому ключу. Devel:: Быстрый взгляд показывает это. PVHV хеш. Elt ключ и SV это следует, его значение. Обратите внимание, что каждый SV имеет различный адрес памяти, указывающий, что они не совместно используются.

Dump \%is_month, 12;

SV = RV(0x81c1bc) at 0x81c1b0
  REFCNT = 1
  FLAGS = (TEMP,ROK)
  RV = 0x812480
  SV = PVHV(0x80917c) at 0x812480
    REFCNT = 2
    FLAGS = (SHAREKEYS)
    ARRAY = 0x206f20  (0:8, 1:4, 2:4)
    hash quality = 101.2%
    KEYS = 12
    FILL = 8
    MAX = 15
    RITER = -1
    EITER = 0x0
    Elt "feb" HASH = 0xeb0d8580
    SV = NULL(0x0) at 0x804b40
      REFCNT = 1
      FLAGS = ()
    Elt "may" HASH = 0xf2290c53
    SV = NULL(0x0) at 0x812420
      REFCNT = 1
      FLAGS = ()

undef скаляр берет столько же памяти сколько целочисленный скаляр, таким образом, Вы могли бы попросить хорошо просто присваиваться им всем к 1 и избегать прерывания упущения свериться exists.

my %is_month = map { $_ => 1 } qw(jan feb mar apr may jun jul aug sep oct nov dec);

print "It's a month" if $is_month{lc $mon});

17
задан Je suis Monica - or maybe not 13 June 2012 в 11:56
поделиться

1 ответ

Вы можете установить свойство KeepWith таблицы Row , чтобы указать блоки, которые должны храниться вместе.

Если вы знаете, что таблица подходит на одной странице для свойства KeepWith первой строки можно установить значение (table.Rows.Count - 1) , когда таблица будет завершена.

24
ответ дан 30 November 2019 в 13:21
поделиться
Другие вопросы по тегам:

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