Что лучший способ состоит в том, чтобы иметь дело с мертвыми ответвлениями в TFS?

is является оператором равенства идентичности (функционирующим как id(a) == id(b)); просто два одинаковых числа не обязательно являются одним и тем же объектом. По соображениям производительности некоторые маленькие целые числа являются memoized , поэтому они будут иметь тенденцию быть одинаковыми (это можно сделать, поскольку они являются неизменяемыми).

PHP ===, с другой стороны, описывается как проверка равенства и типа: x == y and type(x) == type(y) в соответствии с комментарием Пауло Фрейтаса. Этого достаточно для общих чисел, но отличается от is для классов, которые определяют __eq__ абсурдным образом:

class Unequal:
    def __eq__(self, other):
        return False

PHP, по-видимому, допускает то же самое для «встроенных» классов (что Я подразумеваю реализацию на уровне C, а не в PHP). Немного менее абсурдным использованием может быть объект таймера, который имеет различное значение каждый раз, когда он используется как число. Весьма почему вы хотели бы эмулировать Visual Basic Now, а не показывать, что это оценка с time.time(), которую я не знаю.

Грег Хьюджилл (OP) сделал один пояснительный комментарий «Моя цель это сравнение идентичности объекта, а не равенства стоимости. За исключением чисел, где я хочу рассматривать идентичность объекта так же, как равенство стоимости. "

У этого был бы еще один ответ, поскольку мы должны классифицировать вещи как числа или нет, чтобы выбрать, сравнивать ли мы с == или is. CPython определяет протокол number , включая PyNumber_Check, но это не доступно из самого Python.

Мы могли бы попытаться использовать isinstance со всеми которые мы знаем, но это неизбежно было бы неполным. Модуль типов содержит список StringTypes, но не NumberTypes. Начиная с Python 2.6, встроенные числовые классы имеют базовый класс numbers.Number , но он имеет ту же проблему:

import numpy, numbers
assert not issubclass(numpy.int16,numbers.Number)
assert issubclass(int,numbers.Number)

Кстати, NumPy будет производить отдельные экземпляры с низкими номерами.

На самом деле я не знаю ответа на этот вариант вопроса. Я предполагаю, что теоретически можно использовать ctypes для вызова PyNumber_Check, но даже эту функцию обсуждали , и это, конечно, не переносимо. Мы просто должны быть менее конкретными в отношении того, что мы тестируем сейчас.

В конце концов, эта проблема связана с тем, что Python первоначально не имел дерева типов с предикатами, такими как Scheme number? или класса Haskell Num . is проверяет идентификацию объекта, а не равенство значения. PHP также имеет красочную историю, где ===, по-видимому, ведет себя как is только на объектах в PHP5, но не на PHP4 . Таковы растущие трудности перемещения по языкам (включая версии одного).

14
задан TheEmirOfGroofunkistan 16 March 2009 в 15:30
поделиться

3 ответа

Удаление не является постоянным, таким образом, я пошел бы с этой опцией.

можно тогда выбрать, просмотреть ли удаленные объекты в SCE (Инструменты-> Опции-> Управление исходным кодом-> Сервер Основы Команды Visual Studio->, Шоу удалило объекты в Проводнике Управления исходным кодом).

И можно принять решение восстановить ответвления после удаления при необходимости.

8
ответ дан 1 December 2019 в 15:02
поделиться

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

2
ответ дан 1 December 2019 в 15:02
поделиться

Мы перемещаем наши мертвые ветви в архивную область проекта.

  • Поскольку ветки дешевы в TFS, здесь нет проблем с пространством.
  • Удаление может вызвать странные проблемы, когда кто-то пытается добавить что-то новое с тем же именем.
  • Их перемещение позволяет продолжать использовать такие функции, как аннотации (также известные как автор), что позволяет детализировать веток, чтобы увидеть полную историю изменений.
1
ответ дан 1 December 2019 в 15:02
поделиться
Другие вопросы по тегам:

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