1
82
这个
这适用的主要情况是运算符的使用。
类型参数
|
2
41
当您需要定义一个函数时,应该使用inline,该函数必须在每次使用的位置对其类型进行求值(重新求值),而不是普通函数,普通函数只能在第一次使用的位置对其类型进行求值(推断),然后在此后的任何地方都被视为使用第一个推断类型签名进行静态类型化。 在内联情况下,函数定义实际上是泛型/多态的,而在正常(非内联)情况下,函数是静态(通常是隐式)类型的。
将编译、生成和运行以生成以下输出:
换言之,相同的add函数定义已用于生成两个整数相加的函数,以及连接两个字符串的函数(事实上,+上的基础运算符重载也是通过使用inline实现的)。 然而,除了add函数不再内联声明外,此代码完全相同:
将不编译,如果没有此投诉:
就像@pad对这个问题的回答一样 Different argument order for getting N-th element of Array, List or Seq |
3
34
|
4
10
这个 F# component design guidelines
对于“鸭式”类型的C++程序模板,有许多其他“有趣”的内联和静态成员约束。我的建议是像瘟疫一样避免所有这些。 @kvb的答案更深入地解释了什么是“静态类型约束”。 |