Вы не ответили на вопрос. В чём практический смысл избавления от if?
Нравится код или нет в данном случае совсем не причём. Это код, написаный на скорую руку, для примера. И, кстати, понять что он парсит и поменять по желанию, как минимум, ничуть не сложнее вашего.
Вопрос, без подковырок: а зачем избавляться от if, если с ними даже написаный на коленке на скорую руку парсер получается короче минимум раза в 2? Не модно? В чём практический смысл?
например
def tkn(iv):
fv = {'null':None, 'true':True, 'false':False}
s = iv.strip()
if s in fv.keys():
rv = fv[s]
else:
try:
rv = float(s) if ('.' in s) | ('e' in s) | ('E' in s) else int(s)
except ValueError:
rv = s[1:-1] if (s[0] == s[-1]) and s[0] in "\"'" else s
return rv
def arr(iv):
rv = []
tkn = ""
ignore = False
if iv[0] == '[' and iv[-1] == ']':
for c in iv[1:-1]:
if c in "'\"[]{}":
ignore = not ignore
tkn += '' if c == ',' and not ignore else c
if (c == ',') and not ignore:
rv.append(parse(tkn))
tkn = ""
rv.append(parse(tkn))
return rv
def split(iv):
s = iv.strip()
i = s[1:].find(s[0])
j = s[i+1:].find(':')
return [s[1:i+1], s[i+j+2:]] if i > -1 and j > -1 else []
def dict(iv):
rv = {}
tkn = ""
p = []
ignore = False
if iv[0] == '{' and iv[-1] == '}':
for c in iv[1:-1]:
if c in "'\"{}[]":
ignore = not ignore
tkn += '' if c == ',' and not ignore else c
if (c == ',') and not ignore:
p = split(tkn)
if len(p) > 0:
rv[p[0]] = parse(p[1])
tkn = ""
p = split(tkn)
if len(p) > 0:
rv[p[0]] = parse(p[1])
return rv
def parse(iv):
s = iv.strip()
return None if len(s) < 1 else arr(s) if s[0] == '[' else ( dict(s) if s[0] == '{' else tkn(s) )
Именно основателем не станет, т.к. все вакантные места таких отцов уже разобраны :)
Например, давно есть NI LabVIEW. Совсем без букв, конечно, не обойтись, но для многих задач можно вообще ни строчки кода руками не написать.
Малвари, лезущей через эксплойт, всё равно откуда у пользователя было установлено дырявое приложение — из магазина, с сайта разработчика или какой-нибудь файлопомойки.
Он по образованию больше математик, CS — это сопутствующий диплом. Поэтому код именно что на студенческий и похож.
В нашем парламенте самый IT-шник — это как раз ардуинщик. Который на самом деле доктор медицинских наук. Он, кстати, и отвечает за новую госпрограмму Smart Nation.
Из граждан Сингапура в данной теме, скорее всего, я в единственном числе. Поэтому не надо на нас инсинуаций насчёт кармы :)
Код как код, выглядит как и должен выглядеть код написаный специалистом в другой прикладной области, решившим попрограммировать самостоятельно по книжке в качестве хобби. Умиляться коду совершенно незачем. Тем более, что код в этой новости на втором месте.
А ещё у нас есть министр, который достаточно адекватно занимается C и Arduino :)
Нравится код или нет в данном случае совсем не причём. Это код, написаный на скорую руку, для примера. И, кстати, понять что он парсит и поменять по желанию, как минимум, ничуть не сложнее вашего.
Например, давно есть NI LabVIEW. Совсем без букв, конечно, не обойтись, но для многих задач можно вообще ни строчки кода руками не написать.
унесло
филимончик
чаша тонет
шаровары
Вместо «заводиков» у нас были «закатики», вместо «как же так» — «как дела», вместо «цапли-цапли» — «цыпа-цыпа» и вместо «семенить» — «синее» :)
В нашем парламенте самый IT-шник — это как раз ардуинщик. Который на самом деле доктор медицинских наук. Он, кстати, и отвечает за новую госпрограмму Smart Nation.
С поддержкой отрасли тут всё очень хорошо :)
Код как код, выглядит как и должен выглядеть код написаный специалистом в другой прикладной области, решившим попрограммировать самостоятельно по книжке в качестве хобби. Умиляться коду совершенно незачем. Тем более, что код в этой новости на втором месте.
А ещё у нас есть министр, который достаточно адекватно занимается C и Arduino :)
geektimes.ru/post/63360/
Например, вот копия:
www.scribd.com/doc/245744857/Blake-Benthall-Criminal-Complaint