scala类型推断及库方法设计原则和==与java有何差别

scala类型推断

方法msortSwapped(abcd)(_>_)

通常,一旦有需要推断多台方法类型参数的任务时,类型推断器就只参考第一个参数列表中所有参数类型,但不会参考之后其他参数。因为方法msortSwapped是柯里化的方法,带两个参数列表,所以第二个参数(也就是说,那个函数值)将不会用来做决定方法参数的参考。

因此这种类型推断方案也隐含了如下库方法设计原则:如果需要把参数设计为若干非函数值及一个函数值的某种多态方法,需要把函数参数放在柯里化参数列表的最后面。这样一来,方法的正确类型就可以通过非函数参数类推断出来,并且这个类型可以转而用来完成函数参数类型检查。从而使得方法的使用者可以避免提供更多类型信息并能编译出更简洁的函数字面量。

==与java有何差别

scala的==遵循的比较规则:

首先检查左侧是否为null,如果不是,调用左操作数据equals方法。所以,精确的比较取决于做操作的equals方法定义。由于自动的null检查,因此不需要手动再检查一次了。

java里==既可以比较原始类型也可以比较引用类型。对于原始类型,java的==比较值的相等性,与scala一致。二对于引用类型,java的==比较了引用类型的相等性,也就是说比较的是两个变量是否都指向JVM堆里的同一个对象。scala也提供了这种机制,名字是eq。不过,eq和它的反义词neq,仅仅应用于可以直映射到java的对象。

转载于:https://www.cnblogs.com/Nervermore/p/5023590.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值