|
1
19
比这更可怕。方法过载分辨海峡说明见 language spec .
它的意思是,基本上,方法调用中的参数实际上不是一个元组。这是一个
句法的
tuple,意思是用逗号分隔的列表,但是括号是方法调用语法的一部分,逗号也是。这就是为什么,例如,
所以,通常情况下,每个逗号分隔的组件都映射到一个不同的参数。因此为什么
但是,针对您的特定案例的一个特殊案例是:
因此,当移除除元组外的所有重载时,突然括号内的整个内容在调用中被有效地视为元组构造函数。但是如果你有两个超负荷,
|
|
2
3
我现在没有安装F,但我觉得
将打印9,而
会打印…4,对吗?注意双paranthes,标记元组的内对和标记函数调用的外对。 |
|
|
3
3
这只是编译器的魔力。
当在f_中调用c函数时,将c_函数看作只有一个参数——一个元组,它的元素决定了正确的重载。所以你可以写:
|
|
|
4
0
我不是一个F专家,所以我可能有点离题了,但我猜一个元组的F概念与BCL不相关。
我进一步假设,一个f元组在内存中的表示方式与参数传递给c和friends中的方法的方式非常相似。也就是说,它们本质上是其组件的值数组。当将该值数组推送到堆栈上进行方法调用时,其效果与将其每个组成组件推送到堆栈上的效果相同,就像从C调用该方法时一样。
所以第二个例子创建了一个f元组,将它推到堆栈上,然后调用
不管怎样,这是我的猜测。你大概比我更喜欢用F,也许你对此有更深入的了解。您还可以通过查看生成的代码获得其他线索。 Reflector . |
|
KiraHoneybee · 具有构造函数参数的模板化类 4 年前 |
|
|
Jiji · 将简单对象强制转换为简单的通用接口 8 年前 |
|
|
Ashish K · 在Groovy中将字符串参数传递给对象方法参数 8 年前 |
|
|
snuff · c语法的问题-const*const*定义 8 年前 |
|
|
Val · 将整个结构指针数组传递给函数的语法是什么?[已关闭] 8 年前 |
|
|
dragi · 将参数传递到void方法(整数或对象) 8 年前 |
|
|
msinghm · 参数仅与其他参数一起工作,但我希望它们独立工作 8 年前 |
|
|
user3251349 · SSRS:参数未过滤MySQL查询 8 年前 |