質問は、KotlinのイテレータのようなPythonを作成する方法です。このpythonイテレータに相当するkotlinイディオムは何ですか
部分文字列に文字列を解析し、このPythonコードを考えてみましょう:
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']
これは単にPythonのイテレータを説明するためにプレー例です:
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
Kotlinはイテレータと発電機を持っている、と私は理解してタイプごとに1つしか存在できません。私の考えは、ジェネレータと型を持つ型を定義することです。 ((I、C)IterMarks中(STRNG){ ...... }
ため
をしかし、私はどのように行う:だから '解析' からのループのために(上記)、このようになります。
また、初期値+次の値を計算するラムダを持つgenerateSequenceもあります。 'null 'を返すとすぐに、' Sequence'が終了します。 –