Тип возврата PHP

Я сделал это со своего рода методом грубой силы. Во-первых, выясните максимальное количество меток, можно вписаться в пространство. Разделите общий диапазон значений количеством галочек; это минимум интервал галочки. Теперь вычислите, этаж логарифма базируются 10, чтобы получить величину галочки и разделиться на это значение. Необходимо закончить с чем-то в диапазоне 1 - 10. Просто выберите круглое число, больше, чем или равный значению, и умножьте его на логарифм, вычисленный ранее. Это - Ваш заключительный интервал галочки.

Пример в Python:

import math

def BestTick(largest, mostticks):
    minimum = largest / mostticks
    magnitude = 10 ** math.floor(math.log(minimum, 10))
    residual = minimum / magnitude
    if residual > 5:
        tick = 10 * magnitude
    elif residual > 2:
        tick = 5 * magnitude
    elif residual > 1:
        tick = 2 * magnitude
    else:
        tick = magnitude
    return tick

Редактирование: Вы свободны изменить выбор "хороших" интервалов. Один комментатор, кажется, неудовлетворен выборами, если, потому что фактическое количество галочек может быть до 2.5 раз меньше, чем максимум. Вот небольшая модификация, которая определяет таблицу для хороших интервалов. В примере я развернул выборы так, чтобы количество галочек не было меньше, чем 3/5 максимума.

import bisect

def BestTick2(largest, mostticks):
    minimum = largest / mostticks
    magnitude = 10 ** math.floor(math.log(minimum, 10))
    residual = minimum / magnitude
    # this table must begin with 1 and end with 10
    table = [1, 1.5, 2, 3, 5, 7, 10]
    tick = table[bisect.bisect_right(table, residual)] if residual < 10 else 10
    return tick * magnitude
11
задан Gerep 16 August 2016 в 17:09
поделиться

1 ответ

Начиная с PHP 7.0 можно объявить тип возврата как это:

function returnABool(): bool {
    return false;
}

Не только типы общих данных, можно возвратить ожидаемые экземпляры объектов также. Например, Вы ожидаете, что функция всегда возвратит экземпляр класса. Это может быть достигнуто как это:

class Biography {
    public function name() {
        return 'John Doe';
    }
}

Теперь можно объявить тип возврата для этого объекта как это:

function get_bio(): Biography {
    return new Biography();
}

, Когда функция или метод возвращают неожиданный тип данных, , TypeError брошен. Вот пример, где Вы встретитесь TypeError.

class Biography {
    public function name() {
        return 'John Doe';
    }
}

class Bio2 {
    public function name() {
        return 'John Doe';
    }
}

function get_bio(): Biography {
    return new Bio2;
}

И пример, который не бросит никакой TypeError:

class Biography {
    public function name() {
        return 'John Doe';
    }
}

class Bio2 {
    public function name() {
        return new Biography();
    }
}

function get_bio(): Biography {
    $bio2 = new Bio2;
    return $bio2->name();
}
[еще 1112] детали об объявлении типов возвращаемых данных для функций и методов могут быть усвоены из официальная документация .

0
ответ дан 3 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

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