Компаратор в очереди приоритетов: Javascript

Вы должны установить Button.Template. Также Grid.ColumnDefinitions можно использовать, чтобы правильно установить положение и ширину элементов.

        <Button Height="30" Content="Smaple text">
            <Button.Template>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <Border Background="{TemplateBinding Background}"
                         BorderBrush="{TemplateBinding BorderBrush}"
                         BorderThickness="{TemplateBinding BorderThickness}">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <ContentPresenter HorizontalAlignment="Left"  Grid.Column="0"
                                          VerticalAlignment="Center"/>
                                <Canvas Background="AliceBlue" Grid.Column="1" />
                            </Grid>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Button.Template>
        </Button>
3
задан Melissa Stewart 16 January 2019 в 03:38
поделиться

1 ответ

Конструктор ожидает нулевой или один аргумент, который, если предоставлен, должен быть объектом. Если аргумент не предоставлен, по умолчанию используется пустой объект. Затем он проверяет (возможно, пустой) объект на свойства comparator и initialValues. Если эти свойства существуют в объекте, они извлекаются в эти имена переменных (comparator и initialValues) - в противном случае этим именам переменных присваиваются значения по умолчанию, (a, b) => a - b для comparator и [] для initialValues ]. [1 123]

Например,

new PriorityQueue()

приводит к PriorityQueue с .comparator из (a, b) => a - b и initialValues из [], тогда как

new PriorityQueue({ comparator: (a, b) => a.localeCompare(b) })

приводит к [ 1116] с .comparator из (a, b) => a.localeCompare(b) и initialValues из [].

Если в передаваемом аргументе содержатся свойства, отличные от comparator или initialValues, они игнорируются.

Написано многословно, без параметров по умолчанию:

class PriorityQueue {
  constructor(obj) {
    if (obj === undefined) {
      obj = {};
    }
    if (obj.comparator === undefined) {
      obj.comparator = (a, b) => a - b;
    }
    if (!obj.initialValues === undefined) {
      obj.initialValues = [];
    }

    // main constructor body starts here
    this.comparator = obj.comparator;
    this.data = obj.initialValues;
    this.heapify();
  }
0
ответ дан CertainPerformance 16 January 2019 в 03:38
поделиться
Другие вопросы по тегам:

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