BaseType базового типа

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

if ($collection[$subtracted])

, чтобы проверить, является ли $subtracted ключом массива. Но если значение $collection[$subtracted] равно 0, это также не пройдёт тест if. Измените это на:

if (isset($collection[$subtracted]))

Вы также должны добавить:

return array();

после цикла for, чтобы он возвращал пустой массив по умолчанию, если не найдено соответствующих элементов.

function twoSum($nums, $target) {
    $collection = array();

    foreach($nums as $key => $num) {
        $subtracted = $target - $num;

        if (isset($collection[$subtracted])) {
            return array($collection[$subtracted], $key);  
        } else {
            $collection[$num] = $key;
        }
    }

    return array();
}
11
задан Emmanuel F 21 October 2008 в 14:21
поделиться

5 ответов

Существует 4 связанных стандартных пути:

sim is MainSim;
(sim as MainSim) != null;
sim.GetType().IsSubclassOf(typeof(MainSim));
typeof(MainSim).IsAssignableFrom(sim.GetType());

Можно также создать рекурсивный метод:

bool IsMainSimType(Type t)
 { if (t == typeof(MainSim)) return true;   
   if (t == typeof(object) ) return false;
   return IsMainSimType(t.BaseType);
 }
20
ответ дан 3 December 2019 в 02:21
поделиться
if (sim is MainSim)

все, в чем Вы нуждаетесь. ищет дерево наследования.

10
ответ дан 3 December 2019 в 02:21
поделиться

Используйте is ключевое слово:

return t is MainSim;
1
ответ дан 3 December 2019 в 02:21
поделиться

Опция, не работал на меня. Это дало мне предупреждение; "Данное выражение никогда не имеет обеспеченного ('MainSim') тип", я действительно верю однако, предупреждение, к которому имеют отношение больше платформа, которую мы имеем в распоряжении. Мое решение закончило тем, что было:

return t.BaseType == typeof(MainSim) || t.BaseType.IsSubclassof(typeof(MainSim));

Не столь чистый, как я надеялся, или столь простой, как Ваши ответы казались. Независимо, поблагодарите Вас все за свои ответы. Простота их заставляет меня понять, что у меня есть много для изучения.

1
ответ дан 3 December 2019 в 02:21
поделиться
Другие вопросы по тегам:

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