scala学习笔记一

来源:互联网 发布:能恢复手机数据的软件 编辑:程序博客网 时间:2024/05/29 04:36

在学习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
原创粉丝点击