首页 > 编程语言 > 详细

inline——F#是如何更接近动态语言的

时间:2015-11-18 23:02:06      阅读:680      评论:0      收藏:0      [点我收藏+]

 看到F#的inline关键字,马上会联想到C++中也有这个。然而因为F#有类型推导的特性,两者结合起来使本来不起眼的关键字变得神通广大。

因为F#支持泛型,并且有自动泛化的功能,所以很多时候F#用起来跟动态语言很相像。然而也有碰壁的时候,譬如:

    let add a b = a + b
    let f1 = add 1uy
    let f2 = add 1

代码第一行声明了一个函数,第二行使用byte值为参数调用一次,第三行再使用int值调用,这时候就提示语法错误了。因为第二行代码已经确认了函数使用的是byte类型。这函数也不能强行指定使用泛型,因为(+)不是一个泛型函数(在C#中也同样实现不了这个add泛型函数)。但是,F#中,把函数声明成inline的,问题就解决了:

    let inline add a b = a + b
    let f1 = add 1uy
    let f2 = add 1

因为是inline,所以每次调用add时,都重新匹配了一次(+)函数。使得两次调用add都是用了不同的(+)函数。现在是不是有点像动态语言了?但是它是有类型检查的哦。

 

最后回顾之前泛型特化的一个例子,如果换成inline会让事情变得简单多了。下次,我再来讲解如何用 inline 来简化这个例子。

 

inline——F#是如何更接近动态语言的

原文:http://www.cnblogs.com/greatim/p/4976016.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!