![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Scala
Negation
关注Scala、Spark。锻炼从英文文档和源代码学习最新技术的能力。
展开
-
Scala类型 5: 结构类型
结构类型(Structural Type)所谓”结构类型“,指的是一组关于抽象方法、字段、类型的规格说明。 结构类型为静态语言增加了部分动态特性,使得参数类型不再拘泥某个已命名的类型。只要参数中包含结构中声明的方法或值即可。 举例来说,Java里的接口Closeable(只有一个抽象方法close())-对所有定义了close方法的抽象;我们就可以Closeable类型约束参数。在Sc转载 2015-02-27 20:01:10 · 1604 阅读 · 0 评论 -
Scala 点滴:操作符"_"
'_' 操作符collections.原创 2015-04-14 15:25:04 · 474 阅读 · 0 评论 -
scala 类型: Manifest与TypeTag
Manifest用于编译器在运行时也能获取泛型类型的信息。在JVM上,泛型参数在运行时是被“擦拭”掉的,scala需要额外通过Manifest来存储泛型参数的信息,并作为参数用在方法的运行时上下文。scala在2.10,用`TypeTag`替代了`Manifest`,用`ClassTag`替代了`ClassManifest`,原因:在路径依赖类型中,`Manifest`存在问题.转载 2015-12-15 18:17:49 · 702 阅读 · 0 评论 -
Scala 类型: Type vs. Class(类型与类)
(Type-普遍性)Type比Class更”具体”,任何数据都有type。(Class-局限性)Class是面向对象系统里,对同一类数据的抽象。 classOf[List[Int]] # class scala.collection.immutable.List typeOf[List[Int]] # scala.List[Int]原创 2015-12-15 17:18:46 · 1731 阅读 · 0 评论 -
Scala 点滴:“@”绑定变量
类似 List 的 case head :: tails => ???,其他Collection实现:array match { case Stack(head, tails @ _*) => (head, tails)}原创 2015-07-06 16:32:58 · 1363 阅读 · 0 评论 -
Scala 点滴:String & String Interpolation
String:Scala中的String类使用的就是Java的String.class;所以,用法跟Java相同。但是Scala中加入了StringOps类扩展了String,有一些很有用的方法。几个需要注意的是:"a" * 2 返回:"aa":字符串 * 2。""" She said: "Hey,geys." And then... """:原生字符串,其中可有任意符号原创 2015-03-20 21:59:05 · 2271 阅读 · 0 评论 -
A cheat sheet for Scala’s DSL-friendly features(速查表)
DSLs IN ACTION书中的附录:A cheat sheet for Scala’s DSL-friendly featuresScala的DSL特色代码速查表DSL-friendly features of ScalaScala is an object-functional language that runs on the JVM.翻译 2015-03-20 14:05:40 · 754 阅读 · 0 评论 -
Scala 点滴:参数序列 : _ *
问题引入:创建 1->n的序列。我们常用的最简单的创建的序列的方式:List(1, 2, 3) 对于1->n这种Range,我们可以用参数序列的方式创建的序列。val x: Seq[Int] = 1 to nList(x: _ *)上面例子,将x: Seq[Int] 通过操作符 : _ *,变成一个参数序列,传入List.apply(x: Any*),just like List(1, 2,原创 2015-03-06 15:03:04 · 1600 阅读 · 0 评论 -
Scala类型 11: Upper Bounds & Lower Bounds
类型变量界定:Uper Bound(上界):Java泛型中,对于类型 T’ 是类型 T 的子类型的描述为:< T' extends T ><* 或用通配符形式 *>< ? extends T >注:此处extends 并不是一个动词-Java中继承;可以理解为描述性词汇,T’为T 的子类。Scala中,引入操作符’<: ‘:[ T' <: T ]<* 或用通配符形式 *>[ _ <: T ]转载 2015-02-28 20:34:28 · 683 阅读 · 0 评论 -
Scala类型 10 :交集类型(intersection type)与联合类型(union type)
交集类型(intersection type):Scala中,复合类型(compound type)既交集类型。表达形式:X with Y with Z...联合类型(union type):联合类型的表现形式应该为:X or Y or Z...在Scala中没有语法形式的支持union type;但可以通过一些技巧实现。StackOverflow上有两种实现方式。转载 2015-02-28 18:36:05 · 1635 阅读 · 0 评论 -
Scala类型 6:复合类型 & with关键字
with 关键字:class A extends B with C with D with E 解读方式:class A extends (B with C with D with E)(B with C with D with E)首先是一个整体,再由 A 去继承。 注:对于Java中的菱形继承问题;Scala的解决策略是: 1. 继承class混入trait:(extends SuperCl转载 2015-02-27 21:12:13 · 5585 阅读 · 1 评论 -
Scala类型 8:type 关键字
在Scala中,除了class、trait、object 会产生类型,还可以用type关键字声明类型。type 声明别名(alias)(通常用于声明复杂类型或定义一个抽象类型):scala> type S = Stringdefined type alias S声明复杂类型 (如:声明一个结果类型): type T = Serializable { type U; def foo(): U转载 2015-02-27 21:49:35 · 5766 阅读 · 0 评论 -
Scala类型 9:自身类型 & this别名
自身类型(self type): 格式:this: T =>trait A { this: Exception =>}this也可替换为self或其它不是关键字的别名。 指定可以混入的类的超类。这个特质只能混入给定类型的子类中。 注:特质extends一个类时,可以保证其混入的类都是该类的子类;而特质指定自身类型时,可以保证它只能混入该类的子类。class A { t转载 2015-02-28 18:32:34 · 1681 阅读 · 0 评论 -
Scala 点滴:"_" 方法 -> 函数
使用"_",将方法转成函数。原创 2015-12-06 17:38:18 · 424 阅读 · 0 评论