scala学习笔记一

在学习scala的时候碰到这样一个情景:
要求一个字符串的所有字符的Unicode代码的乘积。例如“Hello”所有字符的乘积是9415087488L。
显然提示要你使用字符的toLong方法。于是我一开始写的程序是:
def process(str:String) {
var result=1
for(c<- str) {
result=result*c.toLong
}
print (result)
}
error结果如下
这里写图片描述
提示类型不匹配,要看懂报错信息得去看scala standard lib 找到Int下面的方法如下:

这里写图片描述
发现其实int是有两个*Long参数的方法的 从各自的描述中得知 int分别被隐式转换为Double和Float了 所以解释器不知道这个int到底应该成为那种类型因此报错。因此前面的报错信息就可以看懂了。首先说ambiguous,不知道是用int2long还是int2float,然后就是说既然int不好确定转成哪个,就别用long参数了 你可以用int、char、short、byte
改正的办法就是把result类型声明为Long:
def process(str:String) {
var result:Long=1
for(c<- str) {
result=result*c.toLong
}
print (result)
}

总结:会看scala standard library很重要 英语也很重要。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值