当前位置:首页 > 开发 > IT生活 > 正文

天生一对

发表于: 2007-01-10   作者:cookoo   来源:转载   浏览:
摘要: Born to be together,这句也是Apple以前iTune和iPod的广告词。不过这里是用来比喻两个语言特性:类型推断和命名参数。 自ML诞生的类型推断技术似乎随着C#3的宣传日渐进入主流视野,一些新语言如D,Scala也实现了所谓“局部类型推断”(只简化声明,但不推断函数接口)。类型推断简化了大量不必要的类型声明,使代码获得动态脚本语言一样的感观,同时有获得编译期的类型检查和
Born to be together,这句也是Apple以前iTune和iPod的广告词。不过这里是用来比喻两个语言特性:类型推断和命名参数。

自ML诞生的类型推断技术似乎随着C#3的宣传日渐进入主流视野,一些新语言如D,Scala也实现了所谓“局部类型推断”(只简化声明,但不推断函数接口)。类型推断简化了大量不必要的类型声明,使代码获得动态脚本语言一样的感观,同时有获得编译期的类型检查和运行时的性能。不过在可读性上或多或少有点影响,有几种解决办法:
1)添加注释,以后注释和代码的同步维护负担重,不理想。
2)添加类型声明,像Haskell那样,繁琐。当然显式类型声明有时是用来约束更紧的类型。
3)更具说明性的参数命名+命名参数,这也是为什么动态语言没有类型声明也不会感觉不可读的问题,甚至比静态语言在调用函数的时候更可读。某种程度上VB发明的匈牙利命名法也不失为一种增进动态语言可读性的办法。

命名参数有如下好处:
-不用再硬记参数顺序了,没有IDE提示也能过日子
-相当于调用时的参数描述文档
-一般支持命名参数的语言都会支持可选参数(这两个也是天生一对),可选参数的意义不仅是简化函数调用,而且让参数API可扩展又不影响已有代码。可选参数还消灭了方法重载(overload)的必要。

埃,这么多好处,没有命名参数的语言真是没法活了。

说道命名参数的实现,一般分两类:一种是语法级实现如Python,Ocaml;一种是用hash/record或某种复合数据结构模拟,如Ruby和Haskell。

天生一对

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号