2014-02-24 2 views

답변

3

여러 다른 숫자 형식을 사용할 수있는 함수를 작성하려면 inline과 "정적 멤버 제약 조건"을 사용해야합니다. 문제는 일반 .NET 제네릭은 "+ 연산자 지원"과 같은 제약 조건을 캡처 할 수 없다는 것입니다. 이것은 본질적으로 말한다

val inline add : 
    x: ^a -> y: ^b -> ^c 
    when (^a or ^b) : (static member (+) : ^a * ^b -> ^c) 

을 : 당신이 추론 유형을 볼 때,이 같은 것을 볼 수 있습니다

let inline add x y = x + y 

:

inline을 사용할 수 있습니다, 샘플 add 기능은 일반적인 만들려면 이 함수는 + 연산자를 지원하는 두 개의 인수에서 호출 할 수 있습니다. 이 함수는 inline이므로 F # 컴파일러는 제약 조건을 표현하기 위해 .NET에 의존 할 필요가 없기 때문에 작동합니다. >>> 연산자 같은 작품 :

let inline f a b = a >>> b 

기능은 이제 모두 int64int 인수를 사용할 수 있습니다

f 1024L 2 
f 1024 2 

난 당신이 유용도 찾을 수있는 약 writing generic numeric code in F# 얼마 전에 기사를 썼다 .

+0

질문을 편집하고 의미가 무엇인지 샘플을 추가 할 수 있습니까? –

+0

나는 당신의 기사를 읽고 지금 그것을 얻는다. 내 가난한 영어에 대해 대단히 죄송합니다. – Syeerzy

+0

@Syeerzy 문제가되지 않습니다. 저는 영어 원어민도 아닙니다. (또한 StackOverflow에 오신 것을 환영합니다!) -이 유형을 사용할 때 도움이 더 필요하시면 질문하거나 수정하고 연장하십시오. –