간단한 배열 추가 기능을 작성하려고합니다. 유일한 복잡성은 제네릭을 만들기위한 제 시도에서 비롯됩니다. C#에서는 값 유형에 대한 유형 제약이 없지만 F #에서는 explicit member constraint으로 작동하도록 이해하고 있습니다. 여기 내 시도입니다 :유형 제한이없는 일반 배열의 합
let Add<'T when 'T : (member (+) : 'T -> 'T -> 'T)> (A : 'T[]) (B : 'T[]) =
Array.init A.Length (fun i -> A.[i] + B.[i])
컴파일러는 세 가지 오류가 나열 A. 하나 [I], + 기호 하나, [I] B. 하나,하지만 내 생각은 걸 모두 동일 :
A type parameter is missing a constraint
'when ^T : (static member (+) : ^T * ^T -> ^?6069)'
이것은 단지 구문 문제 일 뿐이며 누구나 올바른 장소에서 나를 가리킬 수 있습니까?
p.s .:이 작업을 수행하는 데 다른 방법이 있습니까? 아니면 올바르게 작동하게하는 올바른 방법입니까?
환상적! 컴파일러가 내 버전에 만족하지 못하는 이유는 무엇입니까? – vlad
예. 명시 적 멤버 제약 조건은'inline'을 필요로합니다. – Daniel
''inline' 함수를 선언했는지 여부와 같은 오류가 발생했습니다 – vlad