Dlaczego wartość fail
rzuca wyjątek? fine
wartość działa. Jeśli usuniemy inline
lub skonwertuję 't
na float
, to działa. KomunikatOperator Inline plus w struct zgłasza wyjątek (F #)
[<Struct>]
type Test<'t> =
val x: 't
val y: 't
new (x,y) = { x = x; y = y }
static member inline (+) ((x,y), a: _ Test) = 0
static member inline (-) ((x,y), a: _ Test) = 0
let a = 1.,2.
let b = Test(1.,2.)
let fine = a - b
let fail = a + b
błąd:
Nieobsłużone Wyjątek System.TypeInitializationException: typ inicjatora FO R AdditionDynamicImplTable
3' threw an exception. ---> System.NotSupportedExcep tion: Dynamic invocation of op_Addition involving coercions is not supported. at [email protected][a,b,c](Type aty, Type bt y, Unit unitVar0) at Microsoft.FSharp.Core.LanguagePrimitives.AdditionDynamicImplTable
3..cctor () --- Koniec wewnętrznej śledzenia wyjątku stosu - - w witrynie Microsoft.FSharp.Core.LanguagePrimitives.AdditionDynamic [T1, T2, TRESult] (T1 x, T2 y) at. $ Program.main @() w C: \ Users \ olsv \ Docume . Visual Studio 2012 \ Projects \ Consol eApplication1 \ ConsoleApplication1 \ Program. fs: linia 14 Naciśnij dowolny klawisz, aby kontynuować. . .