我正在尝试通过scala编译器理解一些自动生成的代码,但是我不知道要搜索什么。
我有以下课程:
main_queue
反编译类文件后,f1和f2方法的签名如下:
foreach (FormElements e in Model.FormElements)
{
var fields = Model.FormElementTypes.Where(f => f.ID == e.FormElementTypesID);
if (fields != null) {
foreach (var field in fields) {
string s = field.Name.ToString();
}
}
}
如您所见,这些方法还有一个附加参数。在哪里可以找到有关此方法类型参数符号 F [_,_]:Arrow1 的文档?
答案 0 :(得分:1)
您正在寻找“上下文范围” 。
当您在规范中查询"Type parameters"时,在第一段中会遇到Button
,并且还会获得指向Context Bounds and View Bounds的链接,其中显示为
(报价略有变化,简化为具有单个上下文绑定的情况):
方法或非特征类的类型参数
A: B
也可以具有一个或 更多上下文范围A
。在这种情况下,类型参数可以是 实例化为A : T
的任何类型的证据S
满足绑定的S
的实例化点。这样的证据 由类型为T
的隐式值组成。包含带有视图或上下文的类型参数的方法或类 bounds被视为等效于具有隐式方法 参数。首先考虑带有 [...]上下文范围,例如:
T[S]
然后将上面的方法定义扩展为
def f[A: U1](params): R = ...
其中
def f[A](params)(implicit v1: U1[A]): R = ...
是新引入的隐式的新名称 参数。此参数称为证据参数。
这里是link to FAQ,其中包含有关该主题的更多信息。