我似乎找不到办法做这样的事情:
"foo", "bar" |
% {$_}
请注意:
当然,这不会编译,因为type Instance<'Aggregate when 'Aggregate :> Aggregate.T<'State,'Event,'Failure>> = {
...
Aggregate: 'Aggregate
CurrentState: 'State
...
}
未定义。还有其他方法可以保留实例的含义吗?
我想到了一些简单的方法,但它们都失去了意义。例如。 'State
与Instance<'State,'Event,'Failure>
不完全相同。
答案 0 :(得分:5)
所有类型参数都必须明确,因此您需要包含'State
,'Event
和'Failure
:
type Instance<'Aggregate,'State,'Event,'Failure when 'Aggregate :> Aggregate.T<'State,'Event,'Failure>> = {
...
Aggregate: 'Aggregate
CurrentState: 'State
...
}
但是,使用此类型时,您很少需要明确指定这些额外参数。在创建实例时,编译器应该能够推断它们,并且即使您必须明确命名_
类型,也可以使用匿名Instance<_,_,_,_>
占位符来表示某些参数。