下一次测试失败。我将GetType直接调用到函数定义中,然后我还在内联函数中调用GetType。生成的类型不相等。比较F#中的函数类型
namespace PocTests
open FsUnit
open NUnit.Framework
module Helpers =
let balance ing gas = ing - gas
[<TestFixture>]
type ``Reflected types``()=
[<Test>] member x.
``test type equality with inline use``() =
let inline (=>) f = f.GetType().FullName, f in
let fullName, fval = (=>) Helpers.balance in
Helpers.balance.GetType().FullName |> should equal (fullName)
我怎么能得到相同的类型,以便“可比”。
我通过反射得到一个地图,其中规格为(函数类型,名称args,返回类型)。此外,我正在构建一个地图obj * string>,并选择这些函数。我想强制执行一个约定,以确保对于同一个键,我得到一个与规范相对应的函数(因为函数映射是手工制作的)。但是,如果类型不同,就像你说的那样,这看起来不太可行。 –
jruizaranguren
2014-09-10 21:48:29
这对我的目的来说就足够了如果我可以用引号将函数包装起来以获得名称或签名。但根据你在http://stackoverflow.com/questions/4944668/f-quotations-traversing-into-function-calls-represented-by-a-value中的评论,这是不可行的,除非2011年之后有一些新的黑客可用。 – jruizaranguren 2014-09-11 10:32:17