질문은 Kotlin의 반복자와 같은 Python을 작성하는 방법입니다. 단지 파이썬 반복자 설명하기 위해이 놀이의 예입니다이 python 반복자에 해당하는 kotlin 관용구는 무엇입니까
def parse(strng, idx=1):
lst = []
for i, c in itermarks(strng, idx):
if c == '}':
lst.append(strng[idx:i-1])
break
elif c == '{':
sublst, idx = parse(strng, i+1)
lst.append(sublst)
else:
lst.append(strng[idx:i-1])
idx = i+1
return lst, i
>>>res,resl = parse('{ a=50 , b=75 , { e=70, f=80 } }')
>>>print(resl)
>>>[' a=50', ' b=75', [' e=7', ' f=80'], '', ' f=80']
:
는 문자열로 문자열을 구문 분석이 파이썬 코드를 고려def findany(strng, idx, chars):
""" to emulate 'findany' in kotlin """
while idx < len(strng) and strng[idx] not in chars:
idx += 1
return idx
def itermarks(strng, idx=0):
while True:
idx = findany(strng, idx, ',{}"')
if idx >= len(strng):
break
yield idx, strng[idx]
if strng[idx] == '}':
break
idx += 1
코 틀린는 반복자와 발전기를 가지고, 그리고 내가 이해 그것은 유형 당 하나만있을 수 있습니다. 내 생각은 유형을 생성자와 인스턴스로 정의하는 것입니다. ((I, C) IterMarks에서 (strng) { ...... }
에 대한
을하지만 난 어떻게해야 : 그래서 '구문 분석'에서 루프 (위)과 같을 것이다
또한 다음 값을 계산하는 초기 값 + 람다를 사용하는 generateSequence도 있습니다. 'null'을 반환하자마자 'Sequence'가 끝납니다. –