누군가 정말이 이상한 관찰을 설명해 주시겠습니까?IronPython 스크립트 내부에서 lambdas를 사용하여 Rx 확장 메서드를 호출 할 수 있습니까?
IronPython 내부에서 Rx 확장 메서드를 호출하려고했지만 단순히 불가능한 것으로 판명되었습니다. 나는이 간단한 예제로 그것을 끓여 냈다 :
import clr
clr.AddReference("System.Core")
from System.Linq import Enumerable
def process(value):
return Enumerable.Select(value, lambda x:x)
이 경우 우리는 보통 LINQ로 시작한다. 배열이나 다른 IEnumerable
객체를 가진 호스트 환경에서 process
함수를 호출하면 정상적으로 작동합니다. 내가 IObservable
물체로 process
기능, 못생긴와 통화 충돌을 호출하는 경우,이 경우
import clr
clr.AddReference("System.Reactive.Linq")
from System.Reactive.Linq import Observable
def process(value):
return Observable.Select(value, lambda x:x)
:
그래서 나는 단순히 Observable
확장 그래서 같은 방법을 사용하여 참조를 대체하기 위해 시도 오류 메시지 :
expected IObservable[object], got Select[int, int]
이 사람이 뭔가에 충돌했다고? 내가 놓친 게 있니? Observable
이 (가) 누락 된 람다 대리인에게 Enumerable
작업을 적용하기 위해 특별한 경우 해킹이 있습니까? 나는 여기서 완전히 당혹 스럽다는 것을 인정해야한다. 그런데
import clr
clr.AddReference("System.Reactive.Linq")
from System.Reactive.Linq import Observable
def process(value):
return Observable.Sum(value)
내가 거기를 떠나 그냥 분명 문제가 정말에 메소드 호출에 있는지 확인하고 싶었 Observable.Select
.
IronPython 저장소에 [문제점] (https://github.com/IronLanguages/main/issues/1564)을 추가로 발견했습니다. IronPython 메서드 호출 해결로 더 일반적인 버그라고 생각하지만 문제에 대한 더 많은 통찰력은 여전히 높습니다. – glopes