寒假学习报告04

今天学习了Scala的剩余的基础内容和安装了spark、sbt。

Scala 函数声明格式:

def functionName ([参数列表]) : [return type]

Scala 函数定义格式:

def functionName ([参数列表]) : [return type] = {
   function body   return [expr]}

Scala 提供了多种不同的函数调用方式

调用方法的标准格式:

functionName( 参数列表 )

函数使用了实例的对象来调用:

[instance.]functionName( 参数列表 )

Scala闭包

闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。

闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。

val multiplier = (i:Int) => i * 10

val multiplier = (i:Int) => i * factor

创建字符串:

var greeting = "Hello World!";或var greeting:String = "Hello World!";

length() 方法来获取字符串长度

s1.length();

String 类中使用 concat() 方法来连接两个字符串:

string1.concat(string2);

String 类中可以使用 printf() 方法来格式化字符串并输出,String format() 方法可以返回 String 对象而不是 PrintStream 对象。

String 中还有许多的常用方法

Scala 数组声明的语法格式:

var z:Array[String] = new Array[String](3)或var z = new Array[String](3)

多维数组一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。

var myMatrix = ofDim[Int](3,3)

concat() 方法可以合并两个数组

range() 方法来生成一个区间范围内的数组。range() 方法最后一个参数为步长,默认为 1:

Scala中使用数组方法是需要导入 import Array._ 包

Scala集合

List的特征是其元素以线性方式存储,集合中可以存放重复对象。

Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。

元组是不同类型的值的集合

Option[T] 表示有可能包含值的容器,也可能不包含值。

迭代器不是一个容器,更确切的说是逐一访问容器内元素的方法。

Scala继承一个基类跟Java很相似, 但需要注意:

1、重写一个非抽象方法必须使用override修饰符。

2、只有主构造函数才可以往基类的构造函数里写参数。

3、在子类中重写超类的抽象方法时,不需要使用override关键字。

Scala 使用 extends 关键字来继承一个类。

Scala 只允许继承一个父类。

Scala重写一个非抽象方法,必须用override修饰符。

在 Scala 中,是没有 static 的,但是提供了单例模式的实现方法,就是使用关键字 object。

Scala 中使用单例模式时,除了定义的类之外,还要定义一个同名的 object 对象,它和类的区别是,object对象不能带参数。

当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。类和它的伴生对象可以互相访问其私有成员。

Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。

与接口不同的是,它还可以定义属性和方法的实现。

一般情况下Scala的类只能够继承单一父类,但是如果是 Trait(特征) 的话就可以继承多个,从结果来看就是实现了多重继承。

Trait(特征) 定义的方式与类类似,但它使用的关键字是 trait

trait Equal {
  def isEqual(x: Any): Boolean
  def isNotEqual(x: Any): Boolean = !isEqual(x)}

isEqual 方法没有定义方法的实现,isNotEqual定义了方法的实现。子类继承特征可以实现未被实现的方法。所以其实 Scala Trait(特征)更像 Java 的抽象类。

Scala 提供了强大的模式匹配机制,应用也非常广泛。

一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。

使用了case关键字的类定义就是就是样例类(case classes),样例类是种特殊的类,经过优化以用于模式匹配。

 

Scala 通过 scala.util.matching 包种的 Regex 类来支持正则表达式

import scala.util.matching.Regexobject Test {
   def main(args: Array[String]) {
      val pattern = "Scala".r
      val str = "Scala is Scalable and cool"

      println(pattern findFirstIn str)
   }
}

Scala 的正则表达式继承了 Java 的语法规则。

Scala 的异常处理和其它语言比如 Java 类似。

Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。

Scala 抛出异常的方法和 Java一样,使用 throw 方法

throw new IllegalArgumentException

异常捕捉的机制与其他语言中一样,如果有异常发生,catch字句是按次序捕捉的。因此,在catch字句中,越具体的异常越要靠前,越普遍的异常越靠后。 如果抛出的异常不在catch字句中,该异常则无法处理,会被升级到调用者处。

捕捉异常的catch子句,语法与其他语言中不太一样。在Scala里,借用了模式匹配的思想来做异常的匹配,因此,在catch的代码里,是一系列case字句。

finally 语句用于执行不管是正常处理还是有异常发生时都需要执行的步骤。

Scala 提取器是一个带有unapply方法的对象。unapply方法算是apply方法的反向操作:unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。

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" ))

      writer.write("文件")
      writer.close()
   }
}

从文件读取内容可以使用 Scala 的 Source 类及伴生对象来读取文件。

安装spark和sbt的截图:

原文地址:https://www.cnblogs.com/baimafeima/p/12261748.html

时间: 2024-11-01 11:47:41

寒假学习报告04的相关文章

寒假学习报告9

今天外面雾霾严重,请大家出门务必带好口罩,全面遮掩口鼻,不要让飞沫喷出,尽量减少外出,减少去人员密集场所的次数,买菜不要扎堆,在家的各位请注意保持开窗通风,保证室内外空气流通,回家时先消毒,勤洗手,饭前便后请大家保证双手保持洁净的状态.吃饭要吃熟食,切忌生冷.油腻.海鲜等不易消化的食物.多喝水,喝热水,勤洗澡,及时更换衣物,换下来的衣服及时放到洗衣机里面清洗,做到病毒零传播,安全你我他.今天依旧没有出门,在家学习算法与数据结构.没有其他特殊情况,生命体征良好,体温正常,无发烧发热状况. 原文地址

寒假学习报告13

实验 4  RDD 编程初级实践 一.实验目的 (1)熟悉 Spark 的 RDD 基本操作及键值对操作: (2)熟悉使用 RDD 编程解决实际具体问题的方法. 二.实验平台 操作系统:Ubuntu16.04 Spark 版本:2.1.0 三.实验内容和要求 1.spark-shell 交互式编程 下载 chapter5-data1.txt,该数据集包含 了某大学计算机系的成绩,数据格式如下所示: 请根据给定的实验数据,在 spark-shell 中通过编程来计算以下内容: 创建目录,将chap

寒假学习报告05

今天在虚拟机上安装sbt和maven,按着林子雨老师的教程来的,也不知道是什么原因老出问题,到现在也没解决好.还学一些简单的爬虫知识. 原文地址:https://www.cnblogs.com/baimafeima/p/12267035.html

寒假学习报告06

学了使用scarpy框架进行爬虫,爬取了某网站的部分信息. 部分代码: # -*- coding: utf-8 -*- import scrapy from dangdang01.items import Dangdang01Item from scrapy.http import Request class DdSpider(scrapy.Spider): name = 'dd' allowed_domains = ['dangdang.com'] start_urls = ['http://

寒假学习报告10

今天继续研究了爬虫 遇到了一些问题,各种查阅资料才得以解决. response.xpath.extract()爬取的值里面含有\r\n\t,如何去掉呢?需要normalize-space()比如:response.xpath('//div[@class=""]/text()').extract()使用normalize-space()后:response.xpath('normalize-space(//div[@class=""]/text())').extrac

寒假学习报告12

把昨天剩余的Scala基础编程做了,也按要求做了下一个实验的内容 3. 统计学生成绩 学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号.性别.课程名 1.课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开 给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函 数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩:另外还需按男女同学分开, 分别统计各门课程的平均成绩,最低成绩,和最高成绩. 测试样例 1 如下: 样例 1 的统计结果输出为

苏黄的假期学习报告3

苏黄的假期学习报告3 复习进度 所有需要复习科目都已经过了一遍,但是时间所剩不多,因为本来寒假就短,我还因为病情住院.不爽! 春节安排 如果学校放假时间往后延一两个星期,我就可以和家人.同学在家乡过完一个完整的春节--从大年三十到元宵节.可惜学校就是想让我们这群年轻人体验一把春运抢不着返程票的滋味,真TMD的生气!我前几天就帮家里人收拾屋子,明天去买只活鸡宰了来祭祀.年三十肯定和家里人过,看不看春晚另外讲:初一就按小学.初中.高中.家这个路线去"行大运":初二回老家.之后就在吃汤圆.粽

Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool

1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/development http://download.jboss.org/jbosstools/updates/stable/ 稍等一刻,选择 Hibernate tool 下一步 ,完成后重启Eclipse即可. 2.项目配置文件生成: 2.1 新建一项目,项目右键生成相关配置 然后如图: 2.2 此处需

Linux内核分析第一次学习报告

Linux内核分析第一次学习报告 学生 黎静 学习内容 1.存储程序计算机工作模型 冯诺依曼体系结构:核心思想为存储程序计算机. CPU抽象为for循环,总是执行下一条指令,内存保存指令和数据,CPU来解释和执行这些指令. API:应用程序编程接口(程序员与计算机的接口界面) ABI:二进制接口,指令编码(程序员与CPU的接口界面) 2.X86汇编 1.寄存器 (1)通用寄存器 (2)段寄存器: (3)标志寄存器 2.计算机的汇编指令 (1)movl指令: 寄存器寻址,寄存器模式,以%开头的寄存