IronPythonの使用方法に関する質問があります。コレクションをいくつか持っていて、そのコレクションからIronPythonの匿名型を作成し、そのコレクション全体を繰り返したいとしましょう。私のコードは次のようになります:IronPythonのLINQ
listInt = List[int]([0, 1, 2, 3, 4])
firstCollection = listInt.Select(lambda(v): type('SomeType', (object,),{"TypeValue": v*v, "TypeIndex": v})())
enumeratorFirst = IEnumerable[object].GetEnumerator(firstCollection)
while enumeratorFirst.MoveNext():
item = enumeratorFirst.Current
このコードはうまくいきます。しかし、インデックスを組み込んだSelectメソッドを使用すると、エラーが発生します。 'int'オブジェクトは反復可能ではありません。
私のコードは次のようになります。
listInt = List[int]([0, 1, 2, 3, 4])
secondCollection = listInt.Select(lambda(v, i): type('SomeType', (object,), {"TypeValue": v*v, "TypeIndex": i})())
enumeratorSecond = IEnumerable[object].GetEnumerator(secondCollection)
while enumeratorSecond.MoveNext():
item = enumeratorSecond.Current
誰もがいくつかの助けを私に提供することはできますか?なぜ2番目のケースでエラーが発生するのですか?
PS:私はここに見えた匿名型の使用方法についてInterface In IronPython.を:私はここに見えたインタフェースの使用状況についてAnonymous objects in Python.
こんにちは@PRMoureu、私はあなたの助けに感謝し、このソリューションをお試しいただきありがとうございます!私が使用したモジュールについて言及してくれなかったことを申し訳ありません。私はclrとSystemをインポートした.NETタイプにアクセスするために、System.Core.dllへの参照を追加しました。リストにアクセスするには、System.Cllections.Generic名前空間を使用しました。 Enumerable拡張を使用するために、私はSystem.Linq名前空間から拡張をインポートしました。これの擬似コードは次のようになります。import clr、import System、clr.AddReference( 'System.Core')、clr.ImportExtensions(System.Linq)、System.Collections.Generic import *、from System.Linq import * –
Bill