Scala
Scala学习记录
这个妹妹我见过
小菜鸡养成记
展开
-
【大数据开发】Scala——将任意类型的变量包装成Option类型
package myTestobject Test3 { def main(args: Array[String]): Unit = { val num: Int = 5 val optionNum: Option[Int] = num match { case v => Some(v) case _ => None } println(optionNum.getOr原创 2020-11-01 16:36:00 · 238 阅读 · 0 评论 -
【大数据开发】Scala——反射机制
import scala.reflect.runtime.universeimport scala.reflect.runtime.universe._import scala.reflect.runtime.universe.typeOfclass Person(val name: String, val age: Int){ def myPrint(): Unit ={ println(name + "," + age) }}object ReflectT原创 2020-10-15 10:24:37 · 438 阅读 · 1 评论 -
【大数据开发】scala——零碎易错知识点总结
1. Unit为空类型,相当于void,可以使用()进行初始化2. Any可以接收任意的基本类型和引用类型3. 可以使用AnyRef接收任意的引用类型4. String是一个不可变的对象,所以该对象不可以被修改。这意味着如果你修改了字符串就会产生一个新的字符串对象5. null值只能被推断为Null类型,null代表空值,可以赋值给任何对象6. 在scala中,{}中可以包含一系列的表达式,块中最后一个表达式的值就是块的值7. scala中没有break和continue关键字,哟啊使用brea原创 2020-10-07 11:56:07 · 153 阅读 · 0 评论 -
【大数据开发】scala报错
error in interpolated string: identifier or block expected override def toString: String = s"name: $_name, age: ${_age}"这是因为成员变量_name没有使用{}。错误原因挺令人奇怪的,idea不会给你提示错误,并且颜色还是紫色的,和${_age}颜色一样,为了保险起见,下次写这类语法糖都用大括号括起来...原创 2020-10-07 09:42:05 · 353 阅读 · 0 评论 -
【大数据开发】scala——第五章练习
***** 第五章练习 *****这一章主要是一些类的练习。要测试类的话可以写一个单例对象,中间定义main方法,模板如下:object Test{ def main(args:Array[String]){ // class testing } class TestClass { // class definition }}/* * * * * * * * * *1. 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数 * * * * * *原创 2020-10-06 14:31:41 · 273 阅读 · 0 评论 -
【大数据开发】scala——第四章练习
***** 第四章练习 *****/* * * * * * * * * *1. 设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另外一个映射,采用同一组键,但在价格上打九折。 * * * * * * * * * */val map = Map("cup" -> 10, "book" -> 30, "Macbook Pro" -> 99800, "iPad" -> 3200)for((k,v) <- map) yield (k, v * 0.9)/原创 2020-10-06 11:48:27 · 187 阅读 · 0 评论 -
【大数据开发】scala——第三章练习
***** 第三章练习 *****/* * * * * * * * * *1. 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数结余0(包含)和n(不包含)之间。 * * * * * * * * * */def makeArr(n:Int) = { val a = new Array[Int](n) for(i <- a) yield scala.util.Random.nextInt(n)}makeArr(10).foreach(println)/* * * * *原创 2020-10-06 10:30:42 · 204 阅读 · 0 评论 -
【大数据开发】scala——第二章练习
***** 第二章练习 *****/* * * * * * * * * *1. 一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1; 如果是0, 则signum为0。编写一个函数来计算这个值。 * * * * * * * * * */def signum(x : Int) = { if (x>0) 1 else if (x<0) -1 else 0}/* * * * * * * * * *2. 一个空的表达式{}的值是什么?类型是什么? * *原创 2020-10-06 09:51:08 · 205 阅读 · 0 评论 -
【大数据开发】scala——第一章练习
***** 第一章练习 *****首先,在命令行输入scala进入REPL模式。信息如下:fengfu-chris@09:32:56 $ scalaWelcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_20).Type in expressions to have them evaluated.Type :help for more information.scala> /* *原创 2020-10-06 09:39:24 · 190 阅读 · 0 评论 -
【大数据开发】scala——字符串差值器、正则表达式、Netty模型的Server和Client端的通信
一、String INTERPOLATION(字符串插值)①s:字符串插值在任何字符串前加上s,就可以直接在串中使⽤变量了字符串插值的位置也可以放表达式②f:插值并格式化输出插值f 可以对字符串进⾏格式化,类似printf:在任何字符串字⾯前加上 f,就可以⽣成简单的格式化串,功能相似于其他语⾔中的 printf 函数。③raw:对字符串不作任何变换的输出除了对字⾯值中的字符不做编码外,raw 插值器与 s 插值器在功能上是相同的。raw类似于s,但是raw对字符串内容不作任何的转换st原创 2020-09-28 08:25:42 · 265 阅读 · 0 评论 -
【大数据开发】scala——模式匹配(类型匹配、数组匹配、列表匹配、元组匹配、样例匹配、option类型)、高阶函数(闭包、柯里化、偏函数、高阶函数和模式匹配的结合)、隐式转换和隐式函数、泛型
一、模式匹配1.1结构和概念match case的语法如下:变量 match { case 值 => 代码 }。如果值为下划线,则代表了不满⾜以上所有情况下的默认情况如何处理。此外,match case中,只要⼀个case分⽀满⾜并处理了,就不会继续判断下⼀个case分⽀了。(与Java不同,java的switch case需要⽤break阻⽌)(1)使⽤|分割多个选项(表示“或”)(2)可以给模式添加守卫_01_matchTest11.2类型匹配Scala的模式匹配⼀个强⼤之处就在于,原创 2020-09-27 08:19:49 · 232 阅读 · 0 评论 -
【大数据开发】scala练习题——类、list、map综合和抽象类、继承、特质综合
一、类、list、map综合package day05/** * 1、 读取以上数据,将信息存入到List[Score]中 * 2、 计算所有的成绩中的最高成绩、最低成绩、总成绩和平均成绩 * 3、 计算所有的成绩中的及格学生的最高成绩、最低成绩、总成绩和平均成绩 * 4、 将集合中的数据,按照成绩降序排列 * 5、 计算不及格的学生中的最高成绩的学生姓名、科目、成绩 * 6、 分别计算男生的数量和女生的数量 * 7、 分别计算所有成绩中, 男生的最高成绩和对应的姓名、女生的最高成绩和对原创 2020-09-26 11:15:16 · 371 阅读 · 0 评论 -
【大数据开发】scala——类、object(单例模式、伴生对象)、apply方法和unaplly方法、继承、向下转型和向上转型、抽象类、特质、枚举、样例类
一、类定义完属性后,需要给属性设置值,一般情况下,我们使用_设置这个类型的默认的值注意null值的使用,如果用的是null值,那个scala就不能自动推导出数据类型(非要用,那么请指定null的类型)scala中的class默认都是私有的,但是我们可以在类外去访问,这是因为scala会自动提供getter 和setter方法给我们使用1.1 自定义setter和getter方法下面自定义setter和getter方法scala风格的setter/getter的写法1.定义一个private原创 2020-09-24 21:21:01 · 380 阅读 · 0 评论 -
【大数据开发】scala练习
package day03import scala.collection.mutableimport scala.collection.mutable.ListBuffer/** * 1. 创建一个List(3,2,4,6,7,5,1,0,9,8) * 将list中每个元素乘以2后生成一个新的集合 * 将list1中的偶数取出来生成一个新的集合 * 将list1排序后生成一个新的集合 * 反转排序顺序 * 将list1中的元素4个一组方法(grouped),看一下是什么数据类型 *原创 2020-09-24 09:22:36 · 189 阅读 · 0 评论 -
【大数据开发】scala——tuple、list(含高阶方法)、wordcount案例、set、并行处理数据和sorted、sortBy、sortWith的区别
一、元组1.1元组的定义、遍历object _01_Tuple { def main(args: Array[String]): Unit = { // 元组 // 1. 定义一个元组 val tuple: (String, String, Int, Double, Int) = ("Lily", "female", 100, 173.5, 65) // 2. 获取元组中的元素 println(tuple._1)原创 2020-09-23 21:54:15 · 794 阅读 · 0 评论 -
【大数据开发】scala集合练习题
设计方法,计算斐波那契数列指定位的数字(递归)object HomeWork1 { def main(args: Array[String]): Unit = { for (num <- 0 until 50){ println(fib(num)) } } def fib(num:Long): Long ={ if (num==0) 0 else if (n..原创 2020-09-22 21:40:46 · 575 阅读 · 0 评论 -
【大数据开发】scala——scala简介、基础、变量和常量、类型层级关系
一、scala简介面向对象:scala是一种面向对对象的语言,每一个值都是一个对象,包括基本数据类型函数式编程:静态类型:每一个变量在定义完就已经确。scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。扩展性:scala可以以库的形式轻易无缝添加新的语言结构。然和方法都可勇总前缀和后缀操作符并发性:scala特点:函数是一等公民:指的是函数和其他数据类型是一样的,处于平等地位,可以赋值给其他变量,也可以作为作为参数,传递给另一个函数,或者作为别的函数的返回值为表达式为中心原创 2020-09-21 21:26:54 · 696 阅读 · 0 评论 -
【大数据开发】scala练习01
第一题package day01/** * 1.百钱百鸡: 一只母鸡5元,一只公鸡3元,一只小鸡1/3元。 * 现在要用100元钱买100只鸡,列出所有的购买方案。 */object HomeWork1 { def main(args: Array[String]): Unit = { var n=0 for (hen <- 0 to 20; rooster <- 0 to 33; poult <- 0 to 100; if ((hen*原创 2020-09-21 20:40:38 · 613 阅读 · 0 评论