【scala】apply和update】的更多相关文章

原文链接:http://blog.csdn.net/lyrebing/article/details/21696581 Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来增强灵活性.灵活性可以让掌握了它的人如鱼得水,也会让初学者不知所措.比如说 Scala 为配合 DSL 在方法调用时有这么一条约定: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 “0 to 2”,实际完整调用是 “0.to(2)”.但 “println(…
我们在使用scala的时候经常会用到对象的apply方法和update方法. 虽然我们表面没有察觉,但是实际上两个方法都会遵循相关约定被调用. apply apply方法的约定:用括号传递给变量(对象)一个或多个参数的时候,会把它转换成对apply方法的调用. 我们先看一个例子. class ClassApplyTest{ //类的apply方法调用示例 def apply(param:String): String ={ println("apply method called,the par…
在akka源码中有这样一个Cluster类. 使用方法是这样的:val cluster = Cluster(context.system); 作为scala菜鸟的我,并没有找到Cluster(system..)这个有参的构造方法.于是开始接着学习scala. Cluster是一个object单例对象. Scala比Java更面向对象的一个方面是Scala没有静态成员.替代品是,Scala有单例对象:singleton object. 当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象…
class ApplyTest{ //一定要写(),不加括号就报错. def apply() = println("Into Spark!") def havaAtry(){ println("have a try!") }} object ApplyTest{ //一定要写(),不加括号就报错. def apply() = new ApplyTest} //调用时: val test = ApplyTest() test.haveAtry() //类名+(),相当…
欢迎关注我的新博客地址:http://cuipengfei.me/ 在Scala中,名字叫做update的方法是有特殊作用的. 比如: 1 2 3 val scores = new scala.collection.mutable.HashMap[String, Int] scores("Bob") = 100 val bobsScore = scores("Bob") 以上三行代码,我们创建了一个可变的map来存储得分情况,然后我们记录了Bob的得分是100分,最…
原文地址 本文内容 并行数组(Parallel Array) 并行向量(Parallel Vector) 并行范围(Parallel Range) 并行哈希表(Parallel Hash Tables) 并行散列 Tries(Parallel Hash Tries) 并行并发 Tries(Parallel Concurrent Tries) 参考资料 并行数组(Parallel Array) 一个 ParArray 序列包含线性.连续的元素数组.这意味着,通过修改底层数组,可以高效地访问和修改元…
中置操作符(二元操作符),操作符位于两个参数之间.操作符包括字母,比如to,也可以包括操作符字符,比如1->10,等同于方法调用1.->(10) a 标识符 b 其中的标识符是一个带有两个参数的方法(一个隐式参数和一个显式参数),例如:1 to 10,实际上是一个方法调用1.to(10) class Fraction(n: Int, d: Int) { val num: Int = n val den: Int = d //使用操作符的名称来定义一个方法 def *(other: Fracti…
最近在学习使用Scala语言做项目,感觉这门语言实在是太优美了!作为一个本科数学.研究生机器学习专业的混合人才(哈哈),这门语言真的是满足了普通计算机编程(告诉计算机怎么做)和函数式编程(告诉计算机做什么)的所有幻想.学了半个多月,根本停不下来!先来做个总结: 语法简洁,往往比Java少至少一半的代码量.比如: 支持自动类型判断,可以省去很多类型标志. e.g.  val x = 2 用伴生对象来生成类,省去new的麻烦.e.g. val cat = Cat("Hello Ketty"…
1.if else表达式 scala中没有三目运算符,因为根本不需要.scala中if else表达式是有返回值的,如果if或者else返回的类型不一样,就返回Any类型(所有类型的公共超类型). 例如:if else返回类型一样 var a = 20 val b = if(a>10){ 12 }else{ 30 } 例如:if else返回类型不一样 val c = 50 val d = if(c > 20){ println("返回一个字符串") "ABC&q…
这次统一看一下scala中容器类的几个方法. Set filter()方法 filter()方法用来从Set中过滤获取含有指定特征的元素.示例代码如下: val colors1 = Set("Blue", "Green", "Red", "yellow") val filteredSet = colors1 filter (_ contains "l") println(filteredSet mkStri…