前面两节学了scala的对象和伴生对象,这两个在使用的时候很有些java的静态成员的意思。 scala中没有静态字段和静态方法。静态成员会破坏scala所支持的完整的面向对象模型。不过可以通过伴生对象实现对scala的类一级的操作。 回过头来再看一遍那个Marker的例子,略做了一些调整 ...
在Java中是可以使用变长参数的,如下面的方法: 在scala中也可以使用变长参数。和java一样,也是只有最后一个参数可以接收可变长度的参数。使用方式是在参数类型后使用特殊符号 ,如下面的max 方法: foldLeft是TraversableOnce类的一个方法。上面的代码实现了从一个集合中获取最大数值的方法。 代码执行结果如下图: 不过和java不同的是,我们不能将一个数组中的元素当做变长参 ...
2016-07-16 23:00 0 1923 推荐指数:
前面两节学了scala的对象和伴生对象,这两个在使用的时候很有些java的静态成员的意思。 scala中没有静态字段和静态方法。静态成员会破坏scala所支持的完整的面向对象模型。不过可以通过伴生对象实现对scala的类一级的操作。 回过头来再看一遍那个Marker的例子,略做了一些调整 ...
Any 前面已经有两次提到过:在scala中,Any类是所有类的超类。 Any有两个子类:AnyVal和AnyRef。对应Java直接类型的scala封装类,如Int、Double等,AnyVal是它们的基类;对应引用类型,AnyRef是它们的基类。 scala中,所有类的关系可以用下面这张 ...
java中的单例模式都很熟悉了:简单地说就是一个类只能有一个实例。在scala中创建单例对象非常简单,创建类时使用object关键字替换class即可。因为单例类无法初始化,所以不能向它的主构造函数传递参数。 下面是一个单例的示例: 其中的MarkerFactory就是一个单例。单例 ...
除了推演变量的类型,scala也会推演方法的返回类型。不过这里有一处需要注意:方法返回类型的推演依赖于方法的定义方式。如果用等号“=”定义方法,scala就会推演方法返回类型;否则,它就认为方法的返回为void。看一个例子: 其中方法一是按照习惯方式定义的,方法二则是使用等号定义 ...
假定要在一个方法中返回多个值。比如需要返回一个人的名、姓和邮箱地址。在Java中最常用的方法是定义一个Person类,其中包括相对应的字段;还有些不常用的方法就是返回一个集合或数组,拿到结果后再进行循环取值。在Scala中我们又多一个选择:元组。 元组是一个不可变的对象序列,可以使用逗号分隔的值 ...
在上一节创建了一个scala类,如果没有更多的方法,scala类的定义还可以更简单一些,看一下下面这个CreditCard类的定义: 是的,只用一行就完成了类的定义,连大括号都不需要。 因为scala也是运行在JVM上,可以考虑以java的方式来看看编译后的类文件。查看的方式还是比较 ...
scala中的字符串类就是java中的java.lang.String类。不过scala也为String提供了一个富封装类:scala.runtime.RichString。 scala可以将java.lang.String类自动转换为scala.runtime.RichString类 ...
当你注册组件时,可以为组件服务传入一系列参数,用于服务解析时使用。 可使用的参数类型 Available Parameter Types Autofac提供了集中参数匹配类别: NamedParameter - 直接通过名称匹配目标参数 TypedParameter ...