
Scala
文章平均质量分 65
u013063153
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Scala基础—面向对象编程示例
package com.spark.scala.basics/** * 1.使用new ClassName的方式构建出类的对象 * 2.如果名称相同,则object中的内容都是class的静态内容,在object中的内容class都可以在没有实例的时候去直接调用; * 可以使用object中的特定的方法来创建类的实例,而这个特定的方法就是apply方法 * 3.objec原创 2017-06-17 15:42:29 · 424 阅读 · 0 评论 -
Scala基础—数组操作示例
package com.spark.scala.basics/** *scala中数据的创建与操作: * 1.最原始的创建数据的方式是形如val array = new Array[Int](5) * 2.最常用和经典的创建数组的方式是形如val array = Array[Int](1,2,3,4,5)或者array = Array(1,2,3,4,5)或者array = Arr原创 2017-06-17 15:04:05 · 2179 阅读 · 0 评论 -
Scala基础—再谈控制语句
package com.spark.scala.basicsimport scala.util.control.Breaks/** * if、for、while等三种控制结构 */object ControlStructures { def main(args: Array[String]): Unit = { var age = 25 /**原创 2017-06-15 23:17:22 · 311 阅读 · 0 评论 -
Scala基础—再谈HelloWorld
package com.spark.scala.basics/** * object作为scala的一个关键字,相当于Java中的public static class这样的修饰符,也就是说object中的成员都是静态的,所以这个例子中的main方法时静态的,不需要类的实例就可以直接被JVM调用,而这正是作为JVM平台上程序入口的必备条件。 * 那么object是不是一个对象? *原创 2017-06-15 22:35:16 · 483 阅读 · 0 评论 -
Scala访问修饰符可见性问题(对比Java)
Java的访问修饰符可见性问题: 类内部本包子类外部包public√√√√protected√√√×de原创 2017-07-03 22:00:13 · 1121 阅读 · 0 评论 -
Scala的单例对象
Scala中没有static关键字,它提供了object关键字来实现单例模式。Scala中使用单例模式时,除了定义类之外,还需要定义同名的object。类为对象的伴生类(companion class),对象为类的伴生对象(companion object),两者可以互相访问其私有成员。// 私有构造方法class Marker private(val color:String) {原创 2017-07-03 22:23:04 · 743 阅读 · 0 评论 -
Scala文件I/O
1.写操作Scala 进行文件写操作,直接用的都是 java中 的 I/O 类 (java.io.File):import java.io._object Test { def main(args: Array[String]) { val writer = new PrintWriter(new File("test.txt" )) write原创 2017-07-03 22:28:22 · 527 阅读 · 0 评论 -
scala 传名调用call-by-name
Scala的解释器在解析函数参数(function arguments)时有两种方式:传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部;传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。这就造成了一种现原创 2017-07-14 16:06:35 · 524 阅读 · 0 评论 -
Scala的协变covariant(+),逆变contravariant(-),上界(<:),下界(>:)
原文:https://my.oschina.net/xinxingegeya/blog/486671Scala的协变(+),逆变(-),上界(:)协变covariant、逆变contravariant、不可变invariant对于一个带类型参数的类型,比如 List[T],如果对A及其子类型B,满足 List[B]也符合List[A]的子类型,那么就称为covariance(协转载 2017-11-09 00:23:07 · 1281 阅读 · 0 评论 -
scala类型系统:15) 协变与逆变
原文链接:http://hongjiang.info/scala-covariance-and-contravariance/#comment-4003对于一个带类型参数的类型,比如 List[T],如果对A及其子类型B,满足 List[B]也符合 List[A]的子类型,那么就称为covariance(协变),如果 List[A]是 List[B]的子类型,即与原来的父子关系正相反,转载 2016-11-29 10:57:52 · 285 阅读 · 0 评论 -
Scala构建工具(SBT)教程
我们使用 sbt 创建、测试、运行和提交作业。该教程会解释你在我们的课程中将会用到的所有 sbt 命令。工具安装页说明了如何安装 sbt。启动 sbt要启动 sbt,打开一个终端(Windows 中的”命令提示符“)并切换到你正在解决的作业所在目录。输入sbt 将会打开 sbt 命令提示符。shell$ cd /path/to/progfun-project-directory #转载 2016-11-01 17:57:58 · 610 阅读 · 0 评论 -
sbt从入门到半熟
原文地址:http://beike.iteye.com/blog/1575296SBT = (not so) Simple Build Tool,是scala的构建工具,与java的maven地位相同。其设计宗旨是让简单的项目可以简单的配置,而复杂的项目可以复杂的配置。。。https://github.com/notyy/sbtTemplate 是我配置好的一个sbt项目,已经转载 2016-11-01 18:13:38 · 2158 阅读 · 0 评论 -
scala中:: , +:, :+, :::, +++的区别
初学scala的人都会被Seq的各种操作符所confuse。下面简单列举一下各个Seq操作符的区别。4种操作符的区别和联系:: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表。用法为 x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元素,也就是说新生成的列表长度为list的长度+1(btw, x::list等价于转载 2016-11-02 09:52:28 · 22084 阅读 · 3 评论 -
scala学习-类与对象
一、类1、Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中;1 class Counter{2 private var value = 0 //类成员变量必须初始化,否则报错3 4 def increment(){ //类中的方法默认是公有可见性5 value += 16 }7 8 def c转载 2016-11-02 13:30:07 · 651 阅读 · 0 评论 -
Scala集合
这个章节的内容包含基本数据结构ListSetTupleMaps函数组合器mapforeachfilterzippartitionfinddrop and dropWhilefoldRight and foldLeftflattenflatMap广义的函数组合器如何处理好Map?基本数据结构Scala提供了一些很方便的集合类。参考 《E转载 2016-11-02 14:40:16 · 286 阅读 · 0 评论 -
scala implicit隐式转化示例
例子一:implicit def stringWrapper(s : String) = new RandomAccessSeq[Char] { def length = s.length def apply(i : Int) = s.charAt(i) }这是一个String=>RandomAccessSeq的隐式转换,只要import转载 2016-11-02 09:49:39 · 556 阅读 · 0 评论 -
浅谈Scala 2.8的包对象(package object)
Scala 2.8提供包对象(package object)的新特性。什么是包对象呢?按我的理解,根据Scala“一切皆对象”设计哲学,包(package)也是一种对象。既然是对象,那么就应该有属性和方法,也可以在包对象内声明某个类型的别名。举个例 package com{ package object ggd543{ type HashMap[A,B] = scala.coll转载 2016-11-02 18:05:00 · 5577 阅读 · 0 评论 -
scala安装和初识
1.Java和scala运行时都需要JRE,而在企业级开发中,一般一定都会用Java,所以都是安装JDK来安装JRE2.因为Java和scala都会被编译成为JVM字节码,所以Java和scala可以相互调用,在实际的企业级开发中,scala进程调用Java实现的JDBC等访问数据库scala的安装:第一步:安装Java,设置环境变量,因为其他的软件需要Java支持的时候回查询原创 2016-11-30 14:27:52 · 2079 阅读 · 0 评论 -
Scala 的 yield 例子 (for 循环和 yield 的例子)
我看了《Programming in Scala》一书,仍然对 Scala yield 关键字的理解不甚清楚。起初我以为 Scala yield 的与 Ruby 的 yield 是一样,Ruby 中 yield 是被传入代码块的占位符。Scala 中的 yield 关键字好像总是在 for 循环中用的. 下面一些例子可以帮助你更好的理解 yield 关键字。下面是摘自 《Programming转载 2016-12-11 15:29:01 · 339 阅读 · 0 评论 -
scala雾中风景(10): 逆变点与协变点
这个问题来自之前这篇scala类型系统:15) 协变与逆变的评论里的问题遇见一个这样的问题class In[+A]{ def fun(x:A){} }会提示error: covariant type A occurs in contravariant position in type A of value xclass In[+A]{def fun(x:A){}}转载 2016-11-29 10:56:25 · 422 阅读 · 0 评论 -
scala类型系统:19) Manifest与TypeTag
Manifest是scala2.8引入的一个特质,用于编译器在运行时也能获取泛型类型的信息。在JVM上,泛型参数类型T在运行时是被“擦拭”掉的,编译器把T当作Object来对待,所以T的具体信息是无法得到的;为了使得在运行时得到T的信息,scala需要额外通过Manifest来存储T的信息,并作为参数用在方法的运行时上下文。def test[T] (x:T, m:Manifest[T]) {转载 2016-11-29 10:53:12 · 370 阅读 · 0 评论 -
关于Transient关键字的使用
author: scruffybearrelease time: 1/11/2006company: Watchdata 如有转载,请注明出处,并保持文章的完整性,谢谢! Java的serialization提供了一个非常棒的存储对象状态的机制,说白了serialization就是把对象的状态存储到硬盘上去,等需要的时候就可以再把它读出来使用。但是在存储对象状态时,我们有时转载 2016-11-03 15:56:48 · 689 阅读 · 0 评论 -
scala sealed关键字
sealed 关键字主要有2个作用:其修饰的trait,class只能在当前文件里面被继承用sealed修饰这样做的目的是告诉scala编译器在检查模式匹配的时候,让scala知道这些case的所有情况,scala就能够在编译的时候进行检查,看你写的代码是否有没有漏掉什么没case到,减少编程的错误。原创 2016-11-03 16:25:25 · 392 阅读 · 0 评论 -
Scala 中的foreach和map方法比较
Scala中的集合对象都有foreach和map两个方法。两个方法的共同点在于:都是用于遍历集合对象,并对每一项执行指定的方法。而两者的差异在于:foreach无返回值(准确说返回void),map返回集合对象。见如下代码及运行结果:b.getClass 得到的是void, 而c.getClass得到的是colletion 。再看代码的第9-11行,foreach和map的运行结果一致。结论就是:转载 2016-11-03 16:39:42 · 5222 阅读 · 0 评论 -
【Scala】使用Option、Some、None,避免使用null
避免null使用大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null。在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。但是这对语言设计者来说是一件令人疑惑的选择。为什么要在程序员希望返回一个对象的时候返回一个关键字呢?Scala的Option类型为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯转载 2016-11-03 16:42:55 · 410 阅读 · 0 评论 -
scala基本语法及注意点
scala有两种变量:val和var,val相当于Java中的final变量,一旦被赋值就不能修改。var相当于java中的普通变量。constant为定义常量的关键字定义函数:如果函数没有返回值,那么返回类型为Unit类似Java的void。如果最后的返回值类型是显而易见那么函数可以不写返回类型,否则就要写如果函数体只有一条语句,可以不写大括号转载 2016-11-03 17:53:25 · 3257 阅读 · 0 评论 -
scala类型系统context bounds
与view bounds一样context bounds(上下文界定)也是隐式参数的语法糖。context bounds的出现是scala2.8版本才增加的,起因是2.8版本修正了数组类型的设计(关于这个话题后续单独讨论),同时为语法上的方便,引入了”上下文界定”这个概念。看一个简单的例子,对于比较两个数的大小,采用隐式参数的做法:scala> def max[T](a:T, b:转载 2016-11-04 15:53:29 · 797 阅读 · 0 评论 -
Scala集合(二)
Scala提供了一系列的集合类的实现。同时,它对于集合类型也进行了一些抽象。这就使得你可以操作一个集合的Foo对象,而不用去关心这个集合是一个List,Set还是其他的什么。这个网页提供了一个很好的方式来理解scala里的集合的默认实现,并且都链接到了相应的scaladoc。基本集合类 常用的集合类型层级关系 集合类的抽象关系集合方法可变性Java 集合类也可直接使用转载 2016-11-07 10:01:04 · 339 阅读 · 0 评论 -
scala中的s函数
//s函数的应用val name="Tom"s"Hello,$name"//Hello,Toms"1+1=${1+1}"//1+1=2原创 2016-11-07 11:14:10 · 4943 阅读 · 0 评论 -
IntelliJ Idea 常用快捷键列表
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动转载 2016-11-28 19:18:48 · 285 阅读 · 0 评论 -
scala控制结构
scala中的基本控制结构:1.顺序2.条件3.循环,和其他的JVM语言是一致的。scala也有一些高级的控制结构,例如模式匹配。if条件表达式会根据if后面括号里面的boolean来决定整个if表达式的值1.scala中的if表达式是有返回值的!这点和Java是不同的2.if表达式中可以进行类型推导,推导一般过程就是根据变量的值的类型来推导确定变量的类型,这在很多复杂算法原创 2016-12-01 09:53:47 · 512 阅读 · 0 评论 -
Scala可变长度参数
Scala 允许你指明函数的最后一个参数可以是重复的。这可以允许客户向函数传入可变长度参数列表。想要标注一个重复参数,在参数的类型之后放一个星号。例如:scala> def echo(args: String*) =for (arg <- args) println(arg)echo: (String*)Unit这样定义, echo 可以被零个至多个 String 参数调用:s转载 2016-12-02 10:06:18 · 872 阅读 · 0 评论 -
scala 函数式编程入门
在scala中函数是一等公民,可以向变量一样被传递,被复制,同时函数可以赋值给变量,变量也可以赋值给函数,因为函数背后是类和对象,也就是说在运行的时候,函数其实是一个变量。这背后的类是scala语言自动生成的,且可以天然的序列化和反序列化,意义:1.可以天然的序列化和反序列化的直接好处就是函数可以在分布式系统上传递!2.因为函数背后是类和对象,所以可以和普通的变量完全一样的应用在任何普通变原创 2016-12-02 10:13:37 · 389 阅读 · 0 评论 -
scala Map 和 Tuple操作
package com.sparktest/** * 1.默认情况下Map构造的是不可变的集合,里面的内容不可变,一旦修改就变成了新的Map,原有的Map内容保持不变 * 2.Map的实例是调用工厂模式的apply来构造Map实例,而需要主要的是Map的接口,在apply中使用了具体的实现 * 3.如果想直接new出Map实例,则需要使用HashMap等具体的Map子类 * 4原创 2016-12-02 18:56:59 · 2224 阅读 · 0 评论 -
scala implicit使用
package com.sparktest/** * 1.object的方式 * 2.import的方式 */class Man(val name: String)/** * 1.object的方式 *///object Man{// implicit def man2SuperMan(man:Man) = new SuperMan(man.name)//}原创 2016-12-05 15:59:47 · 315 阅读 · 0 评论 -
scala Partial Funciton(偏函数)、Exception(异常)、Lazy使用示例
Partial Functionpackage com.sparktest/** * */object PartialFunctionTest { def main(args: Array[String]): Unit = { val sample = 1 to 10 val isEven:PartialFunction[Int,Unit] = {原创 2016-12-05 17:07:23 · 341 阅读 · 0 评论 -
Scala 基础总结
数据类型StringString 本不算什么基础类型,Scala String 类型有些特点简单介绍几点字符串插值(String Interpolation)字符串插值一句话解释:能在字符串定义中直接嵌入变量的引用,举个例子:val name = "wuzheng"println(s"hello $name ") // hello wuzheng转载 2016-11-23 14:10:01 · 2637 阅读 · 0 评论 -
scala 继承覆写使用示例
package com.sparktest/** *继承: * 1.成员没有被赋值,则必须是抽象的 * 2.若想获取父类的数值,则需要提前定义 * */abstract class Person { val conter:Int val conterArray = new Array[Int](conter)}class Sporter extends P原创 2016-12-06 16:29:44 · 439 阅读 · 0 评论 -
scala提取器、注解使用示例
@transient 不会被序列化(反序列化)、也不会被网络传输package com.sparktest/** * */case class Person1(name: String, age: Int)class TestCoder(val name: String, val salary: Int)object TestCoder { def apply(n原创 2016-12-06 18:32:27 · 802 阅读 · 0 评论 -
scala 序列化(反序列化)、File操作使用示例
package com.sparktestimport java.io._import scala.io.Source/** * */@SerialVersionUID(99L) class TestSpark(val name: String) extends Serializableobject FileTest extends App { val teSpar原创 2016-12-07 09:56:50 · 9916 阅读 · 0 评论