Вам нужно использовать __repr__
. Это стандартная функция, такая как __init__
. Например:
class Foobar():
"""This will create Foobar type object."""
def __init__(self):
print "Foobar object is created."
def __repr__(self):
return "Type what do you want to see here."
a = Foobar()
print a
Алгоритм Dijkstra обычно назначает бесконечность начальным весом ребра в графике. Это не делает , имеют , чтобы быть "бесконечностью", просто некоторые произвольно постоянные, но в Java я обычно использую Дважды. Бесконечность. Я предполагаю, что рубин мог использоваться так же.
Некоторые программисты используют Бесконечность или NaN
с, чтобы показать, что переменная никогда не инициализировалась или присваивалась в программе.
origin
средства origin/HEAD
, но мерзавец немного сомнителен о фактическом определении origin' s ГОЛОВА. Удаленные протоколы don' t на самом деле допускают передачу символьных судей, поэтому когда Вы клонируетесь, она эффективно просит у удаленного SHA1 ГОЛОВЫ, и затем выясняет то, на что касательно также указывает на ту фиксацию. (Если существуют несколько, это выбирает ведущее устройство сначала.) И удаленное обновление и такой don' t на самом деле касаются remotes' ГОЛОВЫ, таким образом, you' ре засунуло выполнение его вручную если Вы didn' t получают его, когда Вы клонировались.
– Cascabel
12 May 2011 в 03:22
Я уверен, что существуют другие способы сделать это, но Вы могли использовать Бесконечность для проверки на разумные исходные данные в преобразовании Строки к плаванию. В Java, по крайней мере, Float.isNaN () статический метод возвратит false для чисел с бесконечной величиной, указывая, что они - верные номера, даже при том, что Ваша программа могла бы хотеть классифицировать их как недопустимых. Проверка по сравнению с Плаванием. POSITIVE_INFINITY и Плавание. Константы NEGATIVE_INFINITY решают ту проблему. Например:
// Some sample values to test our code with
String stringValues[] = {
"-999999999999999999999999999999999999999999999",
"12345",
"999999999999999999999999999999999999999999999"
};
// Loop through each string representation
for (String stringValue : stringValues) {
// Convert the string representation to a Float representation
Float floatValue = Float.parseFloat(stringValue);
System.out.println("String representation: " + stringValue);
System.out.println("Result of isNaN: " + floatValue.isNaN());
// Check the result for positive infinity, negative infinity, and
// "normal" float numbers (within the defined range for Float values).
if (floatValue == Float.POSITIVE_INFINITY) {
System.out.println("That number is too big.");
} else if (floatValue == Float.NEGATIVE_INFINITY) {
System.out.println("That number is too small.");
} else {
System.out.println("That number is jussssst right.");
}
}
Демонстрационный Вывод:
Строковое представление:-999999999999999999999999999999999999999999999
Результат isNaN: ложь
, Что число является слишком маленьким.
Строковое представление: 12345
Результат isNaN: ложь
, Что число является jussssst правом.
Строковое представление: 999999999999999999999999999999999999999999999
Результат isNaN: ложь
, Что число является слишком большим.
IDynamicMetaObjectProvider
.
– Jon Skeet
26 October 2010 в 14:38
Я использую его, когда у меня есть объект Диапазона, где один или оба конца должны быть, открывают
Я использовал его в минимаксный алгоритм . Когда я генерирую новые перемещения, если минимальный игрок побеждает на том узле тогда, значение узла является-в€ћ. С другой стороны, если макс. игрок побеждает тогда, значение того узла является +в€ћ.
кроме того, если Вы генерируете состояния узлов/игры и затем испытываете несколько эвристики, можно установить все значения узла к-в€ћ / + в€ћ, который когда-либо имеет смысл и затем когда Вы выполняете эвристику его легкое для устанавливания значения узла:
node_val = -∞
node_val = max(heuristic1(node), node_val)
node_val = max(heuristic2(node), node_val)
node_val = max(heuristic2(node), node_val)
Когда работа в проблемной области, где аккуратный используется (особенно касательная), бесконечность является ответом, который может подойти. Аккуратные концы, используясь в большой степени в графических приложениях, играх и геопространственных приложениях, плюс очевидные математические приложения.
IDictionary<string,object>
, таким образом, да можно рассматривать его как словарь для заполнения его.
– stevemegson
26 October 2010 в 14:41
В некоторых вычислениях физики можно нормализовать неисправности (т.е., бесконечные числа) того же порядка друг с другом, отменив их обоих и позволив приблизительному результату проникнуть.
, Когда Вы имеете дело с пределами, вычислениями как (бесконечность / бесконечность)-> приближение к конечному, число могло быть достигнуто. Для языка полезно иметь способность перезаписать регулярную ошибку деления на нуль.
Используйте Infinity
и -Infinity
, когда реализация математического алгоритма призывает к нему.
В Ruby, Infinity
и -Infinity
имеют хорошие сравнительные свойства так, чтобы -Infinity
< x
< Infinity
для любого вещественного числа x
. Например, Math.log(0)
возвраты -Infinity
, расширяясь на [1 111] свойство, что x > y
подразумевает это Math.log(x) > Math.log(y)
. Кроме того, Infinity * x
Infinity
если x> 0, -Infinity
если x < 0, и 'NaN' (не число; то есть, неопределенный), если x 0.
, Например, я использую следующий бит кода в части вычисления [приблизительно 1 124] логарифмические отношения правдоподобия . Я явно ссылочный -Infinity
для определения значения, даже если k
0
или n
И x
, 0
или 1
.
Infinity = 1.0/0.0
def Similarity.log_l(k, n, x)
unless x == 0 or x == 1
k * Math.log(x.to_f) + (n-k) * Math.log(1.0-x)
end
-Infinity
end
end
Кажется, существует подразумеваемое, "Почему эта функциональность даже существует?" в Вашем вопросе. И причина состоит в том, что Ruby и Python просто предоставляют доступ к полному спектру значений, которые можно определить в форме с плавающей точкой, как определено IEEE.
Эта страница, кажется, описывает его хорошо: http://steve.hollasch.net/cgindex/coding/ieeefloat.html
В результате у Вас может также быть NaN (Не-число) значения и-0.0, в то время как у Вас не может сразу быть реального использования для тех также.
От макушки это может быть полезно как начальное значение при поиске минимального значения.
, Например:
min = float('inf')
for x in somelist:
if x<min:
min=x
, Который я предпочитаю установке min
первоначально к первому значению somelist
, Конечно, в Python, необходимо просто использовать минуту () встроенная функция в большинстве случаев.
Я использовал символьные значения для положительной и отрицательной бесконечности имея дело со сравнениями диапазона для устранения угловых случаев, которые иначе потребовали бы специальной обработки:
, Учитывая два диапазона = [a, b) и C = [c, d) они пересекаются, каждый больше, чем другой, или каждый содержит другой?
A > C iff a >= d
A < C iff b <= c
etc...
, Если у Вас есть значения для положительной и отрицательной бесконечности, которые соответственно выдерживают сравнение больше, чем и меньше, чем все другие значения, Вы не должны делать никакой специальной обработки для открытых диапазонов. Начиная с плаваний и уже удваивает реализацию эти значения, Вы могли бы также использовать их вместо того, чтобы пытаться найти самые большие/самые маленькие значения на Вашей платформе. С целыми числами более трудно использовать "бесконечность", так как это не поддерживается аппаратными средствами.
Я использовал его для случаев, где Вы хотите определить диапазоны предпочтений / позволенный.
, Например, в 37signals приложения Вы имеете как предел проекту номер
Infinity = 1 / 0.0
FREE = 0..1
BASIC = 0..5
PREMIUM = 0..Infinity
тогда, можно сделать проверки как
if PREMIUM.include? current_user.projects.count
# do something
end
Я использовал его в подобном DSL направляющим has_one
и has_many
:
has 0..1 :author
has 0..INFINITY :tags
Это облегчает выражать понятия как звезда Kleene и плюс в Вашем DSL.
Я использую его для определения массы и инерции статического объекта на моделированиях физики. Статические объекты чрезвычайно незатронуты силой тяжести и другими силами моделирования.
Это используется вполне экстенсивно в графике. Например, любой пиксель в 3D изображении, которое не является частью фактического объекта, отмечен как бесконечно далеко. Так, чтобы это могло позже быть заменено фоновым изображением.
I использовал его для представления расстояния фокусировки камеры и, к моему удивлению, в Python:
>>> float("inf") is float("inf")
False
>>> float("inf") == float("inf")
True
Интересно, почему это так.
In Ruby infinity можно использовать для реализации ленивых списков. Скажем, мне нужно N чисел, начинающихся с 200, которые каждый раз последовательно увеличиваются на 100 единиц:
Inf = 1.0 / 0.0
(200..Inf).step(100).take(N)
Подробнее здесь: http://banisterfiend.wordpress.com/2009/10/02/wtf-infinite-ranges- in-ruby /
Я наткнулся на это, потому что я ищу «бесконечное» значение для максимального значения, если данное значение не существует, в попытке создать двоичное дерево. (Поскольку я выбираю на основе диапазона значений, а не только одного значения, я быстро понял, что даже хеш не сработает в моей ситуации.)
Поскольку я ожидаю, что все задействованные числа будут положительными, минимум - это просто: 0. Но поскольку я не знаю, чего ожидать от максимума, я бы хотел, чтобы верхняя граница была какой-то бесконечностью. Таким образом, мне не придется выяснять, с каким «максимумом» мне следует сравнивать.
Поскольку это проект, над которым я работаю на работе, технически это «проблема реального мира». Это может быть немного редко, но, как и многие абстракции, удобно, когда вам это нужно!
Также тем, кто говорит, что этот (и другие примеры) надуманы, я хотел бы указать, что все абстракции в некоторой степени надуманы; это не значит, что они полезны, когда вы их придумываете.
git branch -a
вfallsudie
? – CharlesB 11 May 2011 в 13:52