- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
// on every year that is evenly divisible by 4
// except every year that is evenly divisible by 100
// unless the year is also evenly divisible by 400
pub fn is_leap_year(year: usize) -> bool {
match ((year % 4), (year % 100), (year % 400)) {
(0, 0, 0) => true,
(0, 0, _) => false,
(0, _, _) => true,
(_, _, _) => false,
}
}
Steve_Brown 07.06.2016 15:10 # 0
2400 не нужен
Dummy00001 07.06.2016 16:32 # 0
`year: usize` - где штатный тип для даты?
guest 07.06.2016 16:55 # +2
Dummy00001 07.06.2016 17:05 # +2
для языка который типа якобы "секурити овер эверифинг", заставлять разрабов переписывать велосипеды, это путь в никуда. ошибки переезжают из синтакса в семантику, и ты опять у того же самого разбитого корыта, но только с еще более уёбищным синтаксом.
guest 07.06.2016 17:10 # 0
Dummy00001 07.06.2016 17:19 # 0
guest 07.06.2016 17:32 # +1
gorthauer87 07.06.2016 17:34 # 0
Dummy00001 07.06.2016 17:36 # 0
gorthauer87 07.06.2016 17:41 # 0
Dummy00001 07.06.2016 17:49 # 0
с другой стороны, за исключением тривиальных случаев, такие таблицы они намного выразительнее чем пачки вложенных switch/case'ов, и IMO у компилера больше шансов это грамотно соптимизировать.
bormand 12.06.2016 05:04 # 0
Ну вериложий компилер прекрасно такие таблички оптимизирует.
mrbus 07.06.2016 17:02 # +1
Может все-таки как-нибудь так?
j123123 08.06.2016 00:54 # +4
j123123 08.06.2016 01:14 # +2
Жаль что в стандарте нет
inkanus-gray 08.06.2016 01:21 # 0
j123123 08.06.2016 02:07 # +2
inkanus-gray 08.06.2016 02:20 # +1
Они бы ещё WCT в стандарт внесли!
guesto 08.06.2016 03:12 # +1
с другой стороны если ты знаешь что седьмой бит в байте отвечает за флаг Foo, то в тысячу раз логичнее иметь FOO 00000010b, чем 0x2 какой-нить
gost 08.06.2016 06:55 # +2
Та-даа!