Scala学习笔记--抽象成员】的更多相关文章

package com.evor.test1 class Test1 { } object Test1{ def main(args:Array[String]):Unit = { //类参数和抽象字段的初始化顺序并不一致 //抛出异常的原因:RationalTrait初始化的时候,denonArg仍然为0 /* val r1 = new RationalTrait{ val numerArg=50; val denomArg=60; } */ //解决方案:预初始化字段.在调用超类之前初始化子…
基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可以让整个系统的运行更加平稳.今天要与大家分享一下限流算法和C#版本的组件. 一.令牌桶算法: 令牌桶算法的基本过程如下: 假如用户配置的平均发送速率为r,则每隔1/r秒速率将一个令牌被加入到桶中: 假设桶最多可以存发b个令牌.当桶中的令牌达到上限后,丢弃令牌. 当一个有请求到达时,首先去令牌桶获取令…
Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续更新一些切换后在开发过程中值得注意的地方.以下列举了部分,但令人印象深刻的Scala语言的不同之处,具体的代码演示样例及具体阐述见下文.  Scala中可直接调用Java代码,与Java无缝连接. 语句能够不用";"结束.且推荐不适用";". 变量声明时以var或va…
成员数组和指针是我们c语言中一个非常重要的知识点,记得以前在大学时老师一直要我们做这类的练习了,但是最的还是忘记了,今天来恶补一下.     单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接.微博截图如下.我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章. 为了方便你把代码copy过去编译和调试,我把代码列在下面:  代码如下 复制代码 #incl…
无参方法 功能:将方法的定义转换为属性字段的定义: 作用范围:方法中没有参数,并且方法仅能通过读取所包含的对象属性去访问可变状态,而不改变可变状态,就可使用无参方法: 例子: abstract class Element{     def texts:String } class Sub1Element(text:String) extends Element{     val texts:String = text } object RunApplication{     def main(a…
[TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成.Example:(1,1.3415,"Fred") tuple的访问 可以通过_1,_2,_3访问元组的元素 val first = tuple._1 //元组的位置从1开始,而非从0开始 拉链操作:zip 通过操作元组,可以把多个值绑在一起,以便它们能够被一起处理,可以通过zip方法完…
Scala面向对象: 类: 声明类(一个源文件中可以包含很多public的类) getter和setter 构造函数(主构造器和附属构造器) 继承(extends) 重写父类方法(override def) 重写字段(override val,override var) 1.声明类 /** * * 在scala 中,类默认是public,而且一个源文件可以包含多个public,源文件名可以和文件中定义的类名不一致 */ class Person { val name:String = "jack…
1.简化代码 package com.scala.first import java.io.File import javax.management.Query /** * Created by common on 17-4-5. */ object FileMatcher { def main(args: Array[String]) { for (file <- filesHere) println(file) println() for (file <- filesMatching(&q…
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点:但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法. 一.scala学习…
def repeat(n:Int)(action: =>Unit)=for(i<-1 to n)action var i = 0 repeat(5){ println(i=i+1) } 另外一个例子: scala> def until(condition: =>Boolean)(action: =>Unit) { | if(!condition){ | action | until(condition)(action) | } | } until: (condition: =…
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 3 1.5 Windows下搭建Scala开发环境 4 1.6 Linux下搭建Scala开发环境 5 1.7 Scala开发工具的介绍 8 1.7.1 idea工具的介绍 8 1.7.2 Scala插件安装 8 1.8 scala的开发的快速入门 10 1.8.1 IDE工具Idea 来开发 “…
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person { var name: String = _ /** * 从构造器 * @param name */ def this(name: String) = { this //注意:从构造器,必须先调用主构造器 this.name = name; } override def toString = { "…
笔记的整理主要针对Scala对比Java的新特性:   1.if表达式 if表达式是有结果返回的. val a= if (5>2) "你好" else 1 a的值为if表达式返回值为 "你好"   2.while表达式 while表达式是没有返回值的(返回值为 Unit),在scala中避免使用,通常都需要与var结合使用   3.for表达式 枚举集合遍历 val a = Array(1,2,3,4,5,6) for (i <- a) println(…
1.变量声明 Scala 有两种变量, val 和 var  val的值声明后不可变,var可变 val msg: String = "Hello yet again, world!" 或者类型推断 val msg = "Hello, world!" 2.函数定义 如果函数仅由一个句子组成,你可以可选地不写大括号. def max2(x: Int, y: Int) = if (x > y) x else y 3.for循环 打印每一个命令行参数的方法是: ar…
Scala 的类大抵和 Java 是类似的,简单的例子如下: class MyClass { var myField : Int = 0; def this(value : Int) = { this(); this.myField = value; } def getMyField() : Int = { return this.myField; } def addToMyField(value : Int) { this.myField += value; } } 如果好奇,可以把编译后的代…
Scala是一种函数式语言和面向对象语言结合的新语言,本笔记中就零散记下学习scala的一些心得,主要侧重函数式编程方面. 1. 以递归为核心控制结构. 实现循环处理的方式有三种:goto,for/while,递归,其中用goto实现循环已经在现代语言中被放弃,而for/while形式的结构化编程成为主流,而递归作为另一种方案,则长期只流行在函数式编程的小圈子中. 递归被主流编程界所担心的主要是过深的调用栈,甚至以前的课堂上我们还亲自尝试过将递归改写为循环,但是现代函数式编程语言中,通过尾递归(…
参考这篇文章: http://www.ibm.com/developerworks/cn/java/j-lo-funinscala1/ 这也是一个系列 严格意义上的编程范式分为:命令式编程(Imperative Programming).函数式编程(Functional Programming)和逻辑式编程(Logic Programming) 使用递归的方式去思考 清单 1. 数列求和 //xs.head 返回列表里的头元素,即第一个元素 //xs.tail 返回除头元素外的剩余元素组成的列表…
第2章 变量 val,var,声明变量必须初始化:变量类型确定后不可更改 数据类型:与java有相同的数据类型,在scala中数据类型都是对象 特殊类型:Unit:表示无值,只有一个实例值写出(),相当于void:Null:null:Nothing:null(表示非正常执行) 标识符命名规范:大于1个操作符可以作为标识符:反引号包含的任意字符,包含关键字 scala关键字 第3章 运算符 没有java中的++,--,使用+=,-=替代 键盘输入:StdIn.readxxx 第4章 流程控制 if…
所谓伴生对象, 也是一个Scala中的单例对象, 使用object关键字修饰. 除此之外, 还有一个使用class关键字定义的同名类, 这个类和单例对象存在于同一个文件中, 这个类就叫做这个单例对象的伴生类, 相对来说, 这个单例对象叫做伴生类的伴生对象. 举个栗子:object Companion { def show = println("I am a companion")} class Companion { def shout = Companion.show}(Compan…
继续学习,这一篇主要是通过scala来吐槽java的,同样是jvm上的语言,差距咋就这么大呢? 作为一个有.NET开发经验的程序员,当初刚接触java时,相信很多人对java语言有以下不爽(只列了极小一部分): 1. 一堆的setter/getter方法,没有c#中的property属性概念 2. 方法的参数值,不能设置缺省值 3. 不定个数参数的写法太单一 ... 然后java的拥护者讲出一堆大道理,说这样设计是如何如何有道理,各种洗脑,时间长了,也就被迫习惯了.要不是遇到scala,我还真就…
一 入门 为了增加编程趣味和技能,学习新语言,体会函数式编程和简易的并发管理模型,了解日渐活跃的Spark,尝试下Scala.Scala = Scalable language,作者是Martin Odersky. 1. mac下安装 brew install scala 命令行输入scala  println("hello,scala") 2. Intellij scala plugin http://confluence.jetbrains.com/display/SCA/Gett…
对象实例的变量组成了对象的内存映射 public是Scala的默认访问级别 Scala里方法参数的一个重要特征是它们都是val,不是var Scala不能定义静态成员 单例对象(singleton object) 类的伴生对象 类和它的伴生对象可以相互访问其私有成员 单例对象在第一次被访问的时候才会被初始化 独立对象…
1.简洁 1.1.java的写法 class MyClass { private int index; private String name; public MyClass(int index, String name) { this.index = index; this.name = name; } } 1.2.scala的写法:写起来更快,读起来更容易,重要的是更不容易犯错 class MyClass(index: Int, name: String) 2.更灵活,更抽象 假设你有一个S…
到 官网下载scala tar包  http://www.scala-lang.org/download/ mac Finder里双击解压. 改名成scala 进命令行, mv ~/Downloads/scala /usr/local/share sudo vim /etc/profile export PATH="$PATH:/usr/local/share/scala/bin" 关闭并重启shell窗口. 接下来快速阅读和学习 scala 编程思想…
1 类 (1) scala把主构造函数放到类的定义中,让定义字段及相应方法变得简单起来. class People(age: Int, name: String) scala会自动将这个类变成public,默认的就是public. 如果我们将age这个字段设为 val age: Int,则scala将其定义成为一个private final 字段,并为它创建一个public方法number() 用以取值.如果var name: String,则定义name为private字段,并同时提供publ…
访问修饰符 格式:private[x]或protected[x],x指某个所属包.类或单例对象,表示被修饰的类(或方法.单例对象),在X域中公开,在x域范围内都可以访问: private[包名]:在该包名作用域内,被修饰域都能被访问: private[类名]:在该类的作用域,被修饰域都能被访问: private[this]:仅能在包含了定义的同一对象中访问,用于保证同一类中不能被其它对象访问: 例子: package tests{     private[tests] class Test{  …
.类型参数化数组 val arrayString = Array[String](2); arrayString (0)="Hello"; arrayString (1)="World"; for (i <- 0 to 1){ print(arrayString (i)) } 需要留意上面代码的几个地方如下: 1.无论是在创建数组时的维度指定,还是对数组元素的访问都是使用括号,这里本质上是调用了Array类对应的方法返回的结果完成的操作: 2.scala基本原…
class Thermomenter{ var celsius :Float = _; //将变量设置为缺省值'_',这个符号指定了变量的初始化值 //对数值类型来说是0,布尔类型是false,引用类型是null //Scala中不能随便省略"=_"初始化器,若写成:var celsius:Float //将定义为抽象变量,而不是初始化变量. def fahrenheit = celsius*9/5+32; def fahrenheit_(f:Float)={ celsius = (f…
由于拷贝后文档格式有变, 仅摘几段如下. 完整而且代码带语法高亮的源版在: program-in-chinese/Programming_in_Scala_study_notes_zh 前言: 本书已有中文版, 此笔记并不是对原教程的翻译, 而是围绕示例进行选摘, 并顺便将所有示例改成中文命名(不拘泥于原本命名用词, 而是融入中文特色). 本文代码在Scala 2.12.4, Java 1.8.0_45下测试通过 第一章 普适的语言 1.1 var 首都 = Map("中国" ->…
object object 是只有一个实例的类.它的定义与Java中的class类似,如: // 单例对象 object AppEntry { def main(args: Array[String]): Unit = { print("Hello World!") } } 其中有main方法,它与脚本运行方式不同,需要先编译(scalac),后运行,与java类似: App 运行object,除了使用main方法,还可以直接继承trait(类似于Java中的接口)--App: obj…