AS3: объявляя “неопределенный” параметр для интервала, uint или Числа

Tiller сохраняет все выпуски в виде ConfigMaps в пространстве имен Tiller (kube-system в вашем случае). Попробуйте найти поврежденный выпуск и удалите его ConfigMap, используя команды:

$ kubectl get cm --all-namespaces -l OWNER=TILLER
NAMESPACE     NAME               DATA   AGE
kube-system   nginx-ingress.v1   1      22h

$ kubectl delete cm  nginx-ingress.v1 -n kube-system

Затем удалите все объекты выпуска (развертывание, службы, вход и т. Д.) Вручную и переустановите выпуск снова, используя helm.

Если это не помогло, вы можете попробовать загрузить более новый [релиз] Helm (на данный момент 2.13.1) и обновить / переустановить Tiller.

11
задан Wikiup 8 May 2009 в 15:39
поделиться

3 ответа

UPD (из моего комментария): Это определенно не рекомендуется выбирать какое-то магическое число для обозначения отсутствия значения, если вы не можете быть полностью уверены, что это магическое число не появится в результате некоторой арифметики (что обычно верно). Таким образом, лучший подход здесь - либо использовать более широкий тип, чем int (например, Number ), либо передать какой-либо флаг ( Boolean значение) для работы. как int , чтобы указать отсутствие фактического значения. Выбор должен зависеть от того, хотите ли вы подчеркнуть важность того факта, что переданное значение является целым.


Если вы чувствуете себя комфортно с расширением типа аргумента, тогда вам следует использовать NaN и сделать следующее:

function setMyValue (myVar : Number = NaN) : void
{
    if ( isNaN(myVar) )
    {
        /* Generate a value for myVar */
    }
    else
    {
        /* Use the supplied value for myVar */
    }
}

Это и технически точнее, и более стабильно. Это также позволит вам строго печатать во время компиляции и не вызовет странных ошибок, как в случае использования Object .

Обратите внимание, что это не будет работать с int как один из ответов подсказывает. int имеет только числовые значения, а NaN будет приведен к 0. Вам нужно будет использовать тип Number .

Если вы беспокоитесь о производительности - не беспокойтесь. Использование числа вместо int или uint обычно нормально.


UPD: Если вы хотите явно отметить, что этот аргумент должен быть целым, просто используйте дополнительный флаг и точный тип - это было бы намного яснее.

function setMyValue (isIntValueSupplied : Boolean = false, intValue : int = 0) : void
{
    if ( isIntValueSupplied )
    {
        /* Generate or use a default value of intValue */
    }
    else
    {
        /* Use the supplied value for intValue */
    }
}

Другой вариант - определить свой собственный тип с дополнительным значением, например MaybeInt , который содержит целочисленное значение и флаг (независимо от того, инициализировано оно на самом деле или нет). Таким образом вы четко укажете, что значение должно быть целым или без значения . Однако этот подход может быть немного громоздким.

14
ответ дан 3 December 2019 в 06:47
поделиться

Является ли сгенерированное значение константой? Если да, то почему бы просто не установить это значение по умолчанию?

Проблема в том, что AS3 это не нравится. 'undefined' приводится к '0', поэтому myVar никогда не может быть неопределенным.

Да, потому что это значение инициализации по умолчанию для int (для string и Объект это будет null ).

Другой вариант - ввести параметр как Объект или оставить его неопределенным (с помощью * ), а затем приведите его к типу int , если он не null .

function setMyValue (myVar:Object = null):void
{
    if (myVar == null)
    {
        /* Generate a value for myVar */
    }
    else
    {
        int value = myVar as int;
        /* Use the supplied value for myVar */
    }
}
2
ответ дан 3 December 2019 в 06:47
поделиться

Моим решением было просто использовать это

if(myUint == new uint){ is undefined, act appropriately; }
2
ответ дан 3 December 2019 в 06:47
поделиться
Другие вопросы по тегам:

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