首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

3小时Scala入门

函数的值是函数参数和返回值的取值映射关系, x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式引用了非参数的变量时,这种函数叫做闭包。...Scala有3定义的风格,java风格,简写风格,和case风格。 简写风格可以在声明的参数前加上val即表示的属性,省去属性的绑定。...二十二,构造 Scala包括一个主构造和若干个(0个或多个)辅助构造。 主构造即定义时传参并用来初始化对象属性的构造,它是隐含的。...辅助构造的名称为this,每个辅助构造都必须调用一个此前已经定义好的主构造或辅助构造。 ? 二十三,单例对象和伴生对象 object定义的对象单例对象,可以直接使用无需实例化。...二十四,继承和特征 Scala可以通过extends关键字指定从某个(父)进行继承。 只有子类的主构造可以调用的主构造。 子类可以使用super引用的某个属性和方法。

1.6K30

大数据--scala学习第一章:基础第二章:控制结构和函数第三章:数组第四章:字典和元组第五章:第六章:对象第七章:包和引入第八章:继承第九章文件和正则表达式第十章特质:接口第十一章操作符第十二章函

Scala函数建议使用return返回,你可以使用但不推荐。...如果带参数则在名后的()定义,如果使用表5.1定义的参数,将在字段,如果包含val和var,没有方法使用的情况下改参数只用于语句访问,如果方法使用了就是对象私有字段。...3、测试某个对象属于哪个使用isInstanceOf方法,当对象是该类或者子类的对象时返回True. 4、Scala也有protected修饰符,与java的一样 5、子类的辅助构造不能调用父构造只能通过子类的主构造进行调用形式如下...5、构造的调用顺序: 6、特质还可以继承,该特质被实现时实现自动继承特质的,假如我们的已经扩展了另一个,就必须该类是特质。...Scala还可以为主构造,表达式,泛型参数添加注解。注解定义:注解需要扩展Annotation特质。

4.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

3小时Scala入门

函数的值是函数参数和返回值的取值映射关系, x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式引用了非参数的变量时,这种函数叫做闭包。...Scala有3定义的风格,java风格,简写风格,和case风格。 简写风格可以在声明的参数前加上val即表示的属性,省去属性的绑定。...二十二,构造 Scala包括一个主构造和若干个(0个或多个)辅助构造。 主构造即定义时传参并用来初始化对象属性的构造,它是隐含的。...辅助构造的名称为this,每个辅助构造都必须调用一个此前已经定义好的主构造或辅助构造。 ? 二十三,单例对象和伴生对象 object定义的对象单例对象,可以直接使用无需实例化。...二十四,继承和特征 Scala可以通过extends关键字指定从某个(父)进行继承。 只有子类的主构造可以调用的主构造。 子类可以使用super引用的某个属性和方法。

3.5K20

3小时Scala入门

函数的值是函数参数和返回值的取值映射关系, x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式引用了非参数的变量时,这种函数叫做闭包。...Scala有3定义的风格,java风格,简写风格,和case风格。 简写风格可以在声明的参数前加上val即表示的属性,省去属性的绑定。...二十二,构造 Scala包括一个主构造和若干个(0个或多个)辅助构造。 主构造即定义时传参并用来初始化对象属性的构造,它是隐含的。...辅助构造的名称为this,每个辅助构造都必须调用一个此前已经定义好的主构造或辅助构造。 ? 二十三,单例对象和伴生对象 object定义的对象单例对象,可以直接使用无需实例化。...二十四,继承和特征 Scala可以通过extends关键字指定从某个(父)进行继承。 只有子类的主构造可以调用的主构造。 子类可以使用super引用的某个属性和方法。

1.6K30

scala 语法深析

Unit :无返回值的函数类型,和void相对应 Nil :长度0 的list Any所有类型的,任何实例都属于Any类型 AnyRef所有引用类型的 AnyVal所有值类型的 Nothing...class成为伴生,class的属性都是动态的,scala的class默认可以传参数,默认的传参数就是默认的构造函数。...object: 修饰的称为伴生对象;定义在object的属性(字段、方法)都是静 态的,main函数写在里面;scala 的object是单例对象,可以看成是定义静态的方法的.object不可以传参数...②若想增加一个的传入参数,则需要在声明的重写this构造函数,这样就可以在mian函数声明有增加的属性的对象,当然原来的对象也可以声明。...this(id,name) fcp = facePower } apply方法 使用此方法时,可以在main函数不通过new来创建一个对象,加载创建对象的这个的时候,

62410

大数据利器--Scala语言学习(基础)

函数创建不用依赖于或者对象,而在 Java 当中,函数创建则要依赖于、抽象或者接口。...} def this( 形参列表) { // 辅助构造可以有多个... } } 属性高级 1) Scala 的主构造的形参未用任何修饰符修饰,那么这个参数是局部变量。...2) 如果参数使用 val 关键字声明,那么 Scala 会将参数作为的私有的只读属性使用 3) 如果参数使用 var 关键字声明,那么那么 Scala 会将参数作为的成员属性使用,并会提供属性对应的...特质也是有构造的,构造的内容由“字段的初始化”和一些其他语句构成。...具体实现请参考“特质叠加” 第一种特质构造顺序(声明的同时混入特质) 1) 调用当前构造 2) 第一个特质的父特质构造 3) 第一个特质构造 4) 第二个特质构造的父特质构造,

1K10

学好Spark必须要掌握的Scala技术点

前言 Scala是以JVM运行环境的面向对象的函数式编程语言,它可以直接访问Java库并且与Java框架进行交互操作。...、对象、继承和trait 3.1 3.1.1 的定义 Scala,可以在定义、以在函数定义函数、可以在定义object;可以在函数定义成员的缺省访问级别是:public...Scala主要分主构造和辅助构造两种: 主构造里面的变量会被执行,方法会被加载,调用的方法会被执行 辅助构造(相当于重载的构造函数)不可以直接调用的主构造 /**每个都有主构造,...主构造参数直接放置名后面,可以在主构造对字段赋值,对于主构造参数已赋值的在new的时候可以不再赋值 private[com.bigdata] class Study{}:只有com.bigdata...高阶函数 Scala的高阶函数包含:作为值的函数、匿名函数、闭包、柯里化等,可以把函数作为参数传递给方法或函数

1.5K50

Scala-8.面向对象-构造函数

Scala的主构造函数是以下组合: 构造函数参数内部被调用的方法 在内部执行的语句和表达式 和Java类似,被实例化的时候它们会被赋值。...辅助构造函数必须用this为名创建 每个辅助构造函数必须从调用之前定义的构造函数开始 一个构造函数通过this调用另一个不同的构造函数 case class里添加的辅助构造函数不是构造函数,是的伴生对象的...apply方法 私有构造函数:在名和构造函数接受的任意参数之间插入一个private关键字,就创建了私有主构造函数 这种写法可以用在单例模式 设置构造参数默认值: class Socket(val...通常需要吧字段定义Option可以给到一个默认的初始值 * 继承构造函数参数:将基构造函数参数定义var或者val。...* 调用父构造函数:在Scala定义子类时,可以在子类定义extends时控制被其主构造函数调用的构造函数

96840

Scala语法笔记

JAVA,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala使用apply的方法 JAVA与C++的?...-1 高级for 循环  可以使用变量<- 表达式 的形式提供多个生成器,用分号将其隔开 如果for循环的循环体以yield开始,则循环会构造出一个结合,每次迭代生成集合的一值: 每个生成器都自带一个守卫...,以if开头的Boolean表达式 可以任意多的定义,引入可以在循环中使用变量 定义函数Scala一般不需要声明返回值类型,会自己推断,但使用递归的时候 必须指定返回类型: 默认参数和带名参数(什么鬼...,Java的思想被颠覆) 过程,Scala对于返回值的函数有特殊的表示语法,如果函数体包含在花括号但没有前面的=号,那么返回类型就是Unit 或def box(s : String) : Unit...使用Set和Map 创建初始化使用可变集合 Map是Scala里另一种有用的集合

1.2K20

Scala语言快速了解一下?

Scala继承一个基跟Java很相似, 但我们需要注意以下几点:重写一个非抽象方法必须使用override修饰符。只有主构造函数才可以往基构造函数里写参数。...在子类重写的抽象方法时,你不需要使用override关键字。Scala 使用 extends 关键字来继承一个,继承会继承父的所有属性和方法,Scala 只允许继承一个父。...class Point(xc: Int, yc: Int) extends Equal {}特征也可以有构造,由字段的初始化和其他特征体的语句构成。...构造的执行顺序:调用构造;特征构造构造之后、构造之前执行;特征由左到右被构造;每个特征当中,父特征先被构造;如果多个特征共有一个父特征,父特征不会被重复构造所有特征被构造完毕,子类被构造...构造的顺序是的线性化的反向。线性化是描述某个类型的所有类型的一种技术规格。模式匹配一个模式匹配包含了一系列备选项,每个都开始于关键字 case。

3K102

Scala专题系列(五):与对象

构造: 在Scala,每个都有一个主构造,主构造并不以this方法定义,而是与定义在一起。...1.scala,主构造参数直接放在名后面 class person(val name:String,val age:Int){ ….. } 主构造参数被编译成自段,其值被初始化构造时传入的参数...,如上面的例子,name和age成为person的字段 2:主构造会执行定义的所有语句 构造参数也可以是普通的方法参数,不带val或var,这样的参数如何处理取决于它们在如何被定义。...如果不带val或var的桉树至少被一个方法所使用,那么它将是字段 辅助构造 和java一样,Scala也可以有任意多的构造 1:辅助构造的名称为this,在java辅助构造的名称与名相同 2...在scala,几乎可以在任何语法结构内嵌任何语法结构,可以在函数定义函数,可以在定义 class Network{ class member{ } } val net = new

54130

大数据技术之_16_Scala学习_06_面向对象编程-高级+隐式转换和隐式值

8.4.10 特质的抽象字段   特质未被初始化的字段在具体的子类必须被重写。 8.4.11 特质的构造顺序 第 1 种特质的构造顺序(声明的同时混入特质) ?...子类提供合适的构造,并重写 centerPoint 方法。...扩展自 java.awt.Rectangle 并且是三个构造:一个以给定的端点和宽度构造正方形:一个以 (0,0) 端点和给定的宽度构造正方形,一个以 (0,0) 端点和 0 宽度构造正方形。... 并且是三个构造:一个以给定的端点和宽度构造正方形:   * 一个以 (0,0) 端点和给定的宽度构造正方形,一个以 (0,0) 端点和 0 宽度构造正方形。   ...(一个软件实体,,模块和函数应该对扩展开放,对修改关闭。) 9.2.1 快速入门案例   使用隐式转换方式动态的给MySQL增加 delete 方法。

1.3K20

Scala专题系列(六) : Scala特质

Scala和Java一样不允许从多个继承,在Java只能扩展 自一个,它可以实现多个接口,但接口中只能包含抽象方法,不能包含字段 Scala提供的"特质"类似于java的接口, 但又有所不同...首先调用构造 特质构造构造之后,构造之前执行 特质由左到右被构造 每个特质当中,父特质先被构造 如果多个特质共有一个父特质,而那个父特质已经被构造,则不会被再次构造 所有特质构造完毕...另外特质不能有构造参数,每个特质都有一个无参数构造 特质没有构造参数是特质与之间的其中一个差别,其它的特质具备的所有特性,比如具体的和抽象的字段,以及 特质扩展 上面我们看到了特质可以扩展另一个特质...继承了IOException,而IOException是扩展自Exception 自身类型: 当特质扩展时,编译能够确保所有混入该特质的都认这个,Scala还有另一套机制可以保证这一点:自身类型...$time_$eq(15) } } 当特质被混入的时候,将会得到一个带有getter和setter的time字段,那个构造会调用初始化方法 如果特质扩展自某个,则伴生并不继承这个,

66820

02.Scala:面向对象、Object、抽象、内部类、特质Trait

NOTE] 主构造参数列表是直接定义在名后面,添加了val/var表示直接通过主构造定义成员变量 构造参数列表可以指定默认值 创建实例,调用构造可以指定字段进行初始化 整个class除了字段定义和方法定义的代码都是构造代码...示例 定义一个Person,通过主构造参数列表定义姓名和年龄字段,并且设置它们的默认值 在主构造输出"调用主构造" 创建"张三"对象(姓名为张三,年龄20),打印对象的姓名和年龄 创建"空..."对象,不给构造传入任何的参数,打印对象的姓名和年龄 创建"man40"对象,传入姓名参数,指定年龄40,打印对象的姓名和年龄 参考代码 object _06ConstructorDemo {...) 定义Customer的辅助构造,该辅助构造接收一个数组参数使用数组参数初始化成员变量 使用Person的辅助构造创建一个"zhangsan"对象 姓名为张三 地址北京 打印对象的姓名...抽象 和Java语言一样,scala也可以定义抽象 12.1 定义 如果类的某个成员在当前的定义是包含完整的,它就是一个抽象 不完整定义有两种情况: 方法没有方法体(抽象方法) 变量没有初始化

1.1K10

Scala:面向对象、Object、抽象、内部类、特质Trait(二)

NOTE] 主构造参数列表是直接定义在名后面,添加了val/var表示直接通过主构造定义成员变量 构造参数列表可以指定默认值 创建实例,调用构造可以指定字段进行初始化 整个class除了字段定义和方法定义的代码都是构造代码...示例 定义一个Person,通过主构造参数列表定义姓名和年龄字段,并且设置它们的默认值 在主构造输出"调用主构造" 创建"张三"对象(姓名为张三,年龄20),打印对象的姓名和年龄 创建"空..."对象,不给构造传入任何的参数,打印对象的姓名和年龄 创建"man40"对象,传入姓名参数,指定年龄40,打印对象的姓名和年龄 参考代码 object _06ConstructorDemo {...) 定义Customer的辅助构造,该辅助构造接收一个数组参数使用数组参数初始化成员变量 使用Person的辅助构造创建一个"zhangsan"对象 姓名为张三 地址北京 打印对象的姓名...抽象 和Java语言一样,scala也可以定义抽象 12.1 定义 如果类的某个成员在当前的定义是包含完整的,它就是一个抽象 不完整定义有两种情况: 方法没有方法体(抽象方法) 变量没有初始化

79510

原 荐 Scala的面向对象

eat(){ println("eat") } } 2.构造 1>主构造     和java不同,scala不需要明确声明一个构造,而是直接将构造参数通过构造参数列表声明为的一部分...而直接写在的体的既不是的成员变量也不是成员函数的部分,会自动收集构造函数的体。     scala声明主构造的形式是在右侧声明,如果声明,Scala也提供了默认构造。...示例: //scala不需要明确声明一个构造,而是直接将构造参数通过构造参数列表声明为的一部分 class Person(v1: String, v2: Int) { //创建一个,并定义里的两个成员变量.../而直接写在的体的既不是的成员变量也不是成员函数的部分,会自动收集构造函数的体。...4)但是已经使用了extends显示的继承了父,再向混入特质就要用with关键字了。     一个的声明只能有一个extends,但是可以有多个with。

829130

Scala学习二-面向对象

,没有成员变量,可以省略{ } 2.如果构造参数空,可以省略( ) 因此上面可以简写: object OopDemo{ //创建,没有成员变量,根据条件1省略{ } class...class 名(var/val 参数名:类型 = 默认值, var/val 参数名: 类型 = 默认值){ //构造代码块 } :设置构造 object OopDemo{ //创建...${m2.age}") } } 辅助构造 辅助构造的默认名字都是this,且不能修改,辅助构造的第一行代码,必须要调用主构造或者其他辅助构造 def this(参数名: 类型,参数名...: 类型){ //第一行需要调用主构造或者其他构造 //构造代码 } object OopDemo{ //定义构造函数 class Monekey(var name:...Scala代码可以在子类中使用override来重写父的成员,也可以使用super来引用父的成员.可以使用override来重新一个val字段。

86921

Scala专题系列 (八) : 模式匹配

创建一个单例Demo,里面包含一个函数matchTest,并且参数类型是Any(scala中所有,表示任意类型), 注意看函数体 x = match{ case 1 => "one" } 这个就是...变量,case x if(x == "1") => x等,在使用时一般会加守卫条件(if(...)在模式匹配中就是一个守卫,类型是一个boolean),当然也可以像case x => x这样使用,它会匹配任何输入的合法变量..., 最后case _ => 等于一个default 模式匹配 - 构造模式 构造模式匹配直接在case语句后面接构造,匹配的内容放置在构造参数。...,下面的过程自动发生了: 构造的每个参数都成为val,除非显式被声明为var,但是并不推荐这么做; 在伴生对象中提供了apply方法,所以可以不使用new关键字就可构建对象; 提供unapply方法使模式匹配可以工作...构造模式:提供了深度匹配(deep match),如果备选项是样本类,那么构造模式首先检查对象是否该备选项的样本类实例,然后检查对象的构造参数是否符合额外提供的模式。

82420

Scala教程之:静态类型

因为方法 prepend 参数 elem 是协变的 B 类型。 在scala函数参数类型是逆变的,而返回类型是协变的。...这里connectedNodes 存储的所有节点必须使用同一个 Graph 的实例对象的 newNode 方法来创建。...Scala 那如果想达到和java内部内中一样的效果,区分路径该怎么办呢?使用Graph#Node即可。...因此第一个参数必须是 Int 类型,并且返回类型 List[Int]。 上例第二次调用方法,表明并不总是需要显式提供类型参数。编译通常可以根据上下文或值参数的类型来推断。...当调用 多态方法 或实例化 泛型 时,也不必明确指定类型参数Scala 编译将从上下文和实际方法的类型/构造函数参数的类型推断出缺失的类型参数

1.3K20
领券