
scala
文章平均质量分 59
轉角码农
菜鸟级别程序员
展开
-
Scala 的嵌套方法的定义与递归
在Scala中,方法是可以嵌套的,及可以在一个方法的方法体中定义其他方法。当我们将一个很长的方法重构成为几个更小的方法时,并且这些方法只在该方法中调用,就可以使用嵌套方法。这样的好处是定义的小的辅助方法对外界是不可见的。原创 2016-11-29 21:59:25 · 2565 阅读 · 0 评论 -
告别NullPointerException:Scala中的Option
java.lang.NullPointerException,写过Java代码的人对于这一段异常一定不会陌生。如果说哪一个Java程序员没有遇到过这个异常,我想只有两种情况:1、这个人一定是一个计算机天才,逻辑思维缜密,业务逻辑清晰。2、这仁兄一定没写过代码,至少没有在实际开发中写过代码。空指针异常的来源于null,而null在java中并不是一个实例或者一个类型,它只是Java的一个关键字,nul原创 2016-11-30 23:32:40 · 4026 阅读 · 0 评论 -
Scala中Tuple(元组)的使用
在我们使用某些编程语言开发时,有些时候总是希望函数(方法)返回多个值。一般情况下我们有几种选择,下面我们以Java为例。将返回值作为参数参入函数或者方法,然后修改实参,这样就相当于“返回值”。如:public void func1(String arg1,String arg2){ arg1 = "abc"; arg2 = "bcd"; }这种方式代码比较原创 2016-11-30 22:17:32 · 17060 阅读 · 0 评论 -
Scala类型推断以及必须显式类型注释
Scala对类型推断有很好的支持。在没有显式类型注解时,编译器可以根据上下文识别不少信息。但是相比一些函数式编程语言,Scala的类型推断还是略有欠缺。因为好多语言可以执行全局类型推断(不懂什么意思),而Scala则无法做到这一点,因为Scala支持继承,有面向对象的特性。也即支持多态,所以使得类型推断困难得多。 所以在一些实际得编程中,必须显式提供类型注解,具体:声明了可变的var或者不可变的原创 2016-11-29 22:26:09 · 1787 阅读 · 0 评论 -
IDEA中安装scala插件
最近学习scala以及spark,发现大家都在用idea代替了eclipse,并且在多次与朋友沟通中,发现现在互联网公司也逐渐将开发工具转为idea。据说idea比eclipse以及myeclipse智能很多,而且代码提示功能非常强大。所以,从最近开始,自己也慢慢的转变思维,开始使用idea开发。idea已经集成了好多开发插件,但是由于本人正在学习scala,必需得在idea中集成scala开发工具原创 2016-11-20 17:53:16 · 9634 阅读 · 2 评论 -
Scala中的for推导式
for循环与if语句是各个编程语言中最常用的控制结构语句。在Scala中,for循环的特性被成为for推导式或者for表达式。 我们现在以一个基本的for表达式开始,逐渐熟悉for推导式的各种用法:val dogBreeds = List("Doberman", "Yorkshire Terrier", "Dachshund","Scottish Terrier", "Great Dan原创 2016-12-07 00:14:39 · 3601 阅读 · 0 评论 -
Scala中if使用
从表面上看,Scala中的if语句看起来很像Java中的If语句。执行时首先判断表达式的值,如果为true,则执行对应代码块。否则进行下一代码块判断。如下:if(2+2 == 5){ println("hello from 1984.")}else if(2+2 ==3){ println("hello from Remedial wath class?")}else{原创 2016-12-06 23:21:15 · 9980 阅读 · 0 评论 -
Scala模式匹配-值匹配与简单类型匹配
在Scala的模式匹配中,可以使用类型、通配符、序列、正则表达式,甚至可以深入获取对象的状态。这种对象状态的获取遵循一定的协议,也就是对象内部状态的可见性由该类型的实现来控制,这样我们就可以获取暴露的状态并应用于变量中。对象的获取往往被称为“提取”或者“解构”。1、简单匹配简单匹配有点类似Java中的Switch语句,会匹配每一个确定的值。具体如下: def match_boole原创 2016-12-19 23:48:19 · 2883 阅读 · 0 评论 -
Scala惰性赋值:lazy的使用
在一些情况中我们经常希望某些变量的初始化要延迟,并且表达式不会被重复计算。就像我们用Java实现一个懒汉式的单例。如:打开一个数据库连接。这对于程序来说,执行该操作,代价式昂贵的,所以我们一般希望只有在使用其的引用时才初始化。(当然实际开发中用的是连接池技术)为了缩短模块启动时间,可以将当前不需要的某些工作推迟执行。保证对象中其他字段的初始化能优先执行。在Scala中,使用lazy关键字来实原创 2016-12-19 21:00:18 · 4990 阅读 · 0 评论