2015-07-08 5 views
2

Я могу понять, почему в большинстве случаев необходимо обеспечить, чтобы время окончания было больше, чем время начала, но есть ли конкретная причина, почему библиотека JodaTime применяет это ограничение для типа BaseInterval?Почему это должно быть больше, чем начать для JodaTime BaseInterval?

Это действительно мешает моей способности проектировать машину времени, которая также может перемещаться назад во времени.

ответ

1

Потому что невозможно что-то закончить, прежде чем вы начнете его.

Время увеличивается в измерительной системе JodaTime. Это означает, что все времена упорядочены так, что меньшее время «раньше» больше времени. Таким образом, «начальное» время чего-то будет меньше или равно его «концу».

Что касается конструктивных соображений, это значительно упрощает математику. Чтобы сравнить, если два раза перекрываются, можно упростить сравнения, основанные на предположениях, что время начала до конца. Без таких предположений необходимо было бы определить «направление» временного интервала и, возможно, получить «обратное направление» для обнаружения перекрытия таким же образом.

Поскольку временные интервалы могут быть объединены таким образом, чтобы получить промежуток с интервалом двух интервалов, интервалы, содержащие не похожие направления, нарушают математические предположения. Например, каково направление границ интервала, содержащего как прямые, так и обратные направления времени? Я предположил, что можно придумать «смешанное» направление, но это еще более усложняет математику с тремя состояниями для интервального направления.

Аналогичным образом, отказ в вычислении ограничивающего интервала, когда его компоненты находятся в смешанном направлении, усложняет интерфейс для всех обычных случаев использования. Чистая, краткая математика, основанная на наборах, должна была бы как-то четко включить направление.

+0

Благодарим вас за это изменение, которое разъясняет многое другое. – Greg

+0

@Greg Спасибо за добрые слова. Утверждения просты, но последствия часто не являются. Я занимался (и писал) системами времени, которые обрабатывали интервалы в прошлом. Решение Йоды иметь одностороннее время - это то, почему интервалы как набор систем мгновений работают интуитивно. Вы нуждаетесь в двунаправленных временах, интригует меня. Для того чтобы интервал как набор работал правильно, нужны двунаправленные моменты. Мне, возможно, придется попытаться моделировать существование молока в «К счастью, молоко» –

+0

@Greg. По чисто повествовательному сценарию большинство путешествий во времени моделируется как «прыжки» назад в новую точку, где вы двигаетесь вперед. В таких прыжках они имеют тенденцию быть мгновенными. На самом деле, если что-то двигалось назад, и из системы отсчета все еще была прямая стрела времени, не сразу ли она столкнулась бы с самим собой? Мог бы подумать об этом и разработать в каком-то механизме безопасности для вашего машинного времени :) –

Смежные вопросы