Единственной вещью, которую я добавил бы к ответ Eric , является объяснение; я чувствую, что знание того, почему код работает, лучше, чем знание, какой код работает.
объяснение - это: скажем, Вы хотите число между 2,5 и 4.5. Диапазон 2.0 (4.5 - 2.5). NextDouble
только возвраты число между 0 и 1.0, но если Вы умножаете это на диапазон, Вы получите число между 0 и диапазонами .
Так, это дало бы нам случайный, удваивается между 0,0 и 2.0:
rng.NextDouble() * 2.0
, Но, мы хотим их между 2,5 и 4.5! Как мы делаем это? Добавьте самое маленькое количество, 2.5:
2.5 + rng.NextDouble() * 2.0
Теперь, мы получаем число между 0,0 и 2.0; если Вы добавляете 2.5 к каждому из этих значений, мы видим, что диапазон теперь между 2,5 и 4.5.
Сначала я думал, что имело значение, если b> a или a> b, но если Вы работаете он оба способа, которыми Вы найдете, это удается тождественно, пока Вы не портите порядок используемых переменных. Мне нравится выражать его более длинными именами переменной, таким образом, я не становлюсь перепутанным:
double NextDouble(Random rng, double min, double max) { return min + (rng.NextDouble() * (max - min)); }
Попробуйте вспомогательный метод haml_tag
, поставляемый с Haml. В некотором смысле это похоже на content_tag
, но выводит HTML с правильным отступом. Основное отличие состоит в том, что он выводит данные непосредственно в шаблон, а не возвращает строку. Например:
module ThingsHelper
def foo
haml_tag :ul do
3.times { haml_tag(:li, "foo") }
end
end
end
(Кстати, очень плохим стилем Ruby считается использование для отступа чего-то другого, кроме двух пробелов).
Я сомневаюсь в этом - по крайней мере, без
Ваш = foo
просто печатает то, что возвращает ваш помощник foo
- haml не анализирует это. И вы также не можете написать haml в своем вспомогательном методе.
Самый простой способ, который я могу придумать для решения этой проблемы, - это просто добавить буквальные символы пробела в ваш помощник (например, \ n
и ] \ t
).
Вы также можете потребовать
соответствующие классы haml в вашем помощнике и вручную вызвать методы синтаксического анализа на ret
, но это, вероятно, сложнее, чем целесообразно.