우선이 문제를 다루는 더 좋은 방법이 있으므로 문제가되지 않습니다.F # : 이상 유형 유추 행동
그러나 이해할 수없는 부분입니다. 누군가 이것을 설명 할 수 있습니까? 나는이 잘 같은 스왑 기능을 사용할 수 있어요
namespace Utilities
module Misc
let Swap (left : 'a byref) (right : 'a byref) =
let temp = left
left <- right
right <- temp
:
나는대로 스왑 함수를 정의합니다.
Misc.Swap (&s.[i]) (&s.[j])
하지만 같은 모듈 정의 할 때 :
This expression has type 'b byref but is here used with type 'a ref
어떻게 발신자의 인수에 대한 형식 유추가 이동하여 변경 않았다 : 나는 두 인수에 다음과 같은 오류가
namespace Utilities
type Misc =
static member Swap (left : 'a byref) (right : 'a byref) =
let temp = left
left <- right
right <- temp
을 함수 유형에?
감사합니다; 우리는 아마도 'byref'카레 매개 변수를 사용하지 못하도록 언어 명세를 바꿀 것입니다. 부분적인 응용 프로그램이 byref를 포착하려고 시도했기 때문에 좋지 않습니다. :) – Brian