问题导读 1.Scala中有哪些常见符号? 2.本文讲了哪些符号? 3.你对符号的理解是什么? 4.<-,->,=>,Int=,_ 它们含义是什么?用在什么地方? 当我们学习spark的时候,我们知道spark是使用Scala语言开发的,由于语言是相通的,所以对于传统程序员【Java,.net,c等】,我们能看懂Scala程序是没有问题的。但是当我们看到它的时候,却傻眼了。那么多符号,左箭头,右箭头,下划线等等搞得摸不着头脑。 看来如果想顺利的学习,我们必须学一下Scala了。很多都是从变量定义,函
Scala 编程规范中,有一些很有意思的规则。合理地使用这些规则,可以帮助我们编写更简洁更有效的代码。
模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函数和偏应用函数、Scala学习笔记(七) Sealed Class 和 Enumeration都是为了这一篇而铺垫准备的。
我之前的技术栈主要是Java、Python,机器学习方面主要用到是pandas、numpy、sklearn、scipy、matplotlib等等,因为工作需要使用spark,所以理所应当的开始学习pyspark;
1、Set、Map 是 Java 中也有的集合。 2、Seq 是 Java 中没有的,我们发现 List 归属到 Seq 了,因此这里的 List 就和 java 不是同一个概念了。 3、我们前面的 for 循环有一个 1 to 3,就是 IndexedSeq 下的 Vector。 4、String 也是属于 IndexeSeq。 5、我们发现经典的数据结构,比如Queue 和 Stack 被归属到 LinearSeq。 6、大家注意 Scala 中的 Map 体系有一个SortedMap,说明 Scala 的 Map 可以支持排序。 7、IndexSeq 和 LinearSeq 的区别 IndexSeq 是通过索引来查找和定位,因此速度快,比如 String 就是一个索引集合,通过索引即可定位。 LineaSeq 是线型的,即有头尾的概念,这种数据结构一般是通过遍历来查找,它的价值在于应用到一些具体的应用场景(比如:电商网站,大数据推荐系统:最近浏览的10个商品)。
scala 注释 与 java 完全一样 // 单行注释 /*...*/ 多行注释 /**...*/ 文本注释注释
高阶函数:以函数作为参数或返回值的方法(函数)称为高阶函数。我的理解是高阶函数是一种思想,它的作用能让我们的程序更加灵活。 思考:如果让你实现一个计算器,功能不多,只有+,-,*,/ 四个功能。 方式一:普通方式 定义四个方法(函数)
摘 要 本文将详细介绍Scala的基础语法。 Scala的变量声明 package com.itunic.scala /** * Created by ITUNIC on 2016/11/6. */ object VariableDemo { def main(args: Array[String]) { //使用val定义的变量值是不可变的,相当于java里用final修饰的变量 val i = 1 //使用var定义的变量是可变得,在Scala中鼓励使用val var
Scala 是一种强大的静态类型编程语言,其中的 Trait 是一种重要的特性。Trait 可以被看作是一种包含方法和字段定义的模板,可以被其他类或 Trait 继承或混入。在本文中,我们将介绍 Scala Trait 的边界(Boundary)的概念,并展示如何使用它来限制 Trait 的使用范围。
第五章 函数式编程-基础5.1 函数式编程内容说明5.1.1 函数式编程内容5.1.2 函数式编程授课顺序5.2 函数式编程介绍5.2.1 几个概念的说明5.2.2 方法、函数、函数式编程和面向对象编程关系分析图5.2.3 函数式编程小结5.3 为什么需要函数5.4 函数的定义5.4.1 函数的定义5.4.2 快速入门案例5.5 函数的调用机制5.5.1 函数的调用过程5.5.2 函数的递归调用5.5.3 递归练习题5.6 函数注意事项和细节讨论5.7 函数练习题5.8 过程5.8.1 基本概念5.8.2 注意事项和细节说明5.9 惰性函数5.9.1 看一个应用场景5.9.2 画图说明(大数据推荐系统)5.9.3 Java 实现懒加载的代码5.9.4 惰性函数介绍5.9.5 案例演示5.9.6 注意事项和细节5.10 异常5.10.1 介绍5.10.2 Java 异常处理回顾5.10.3 Java 异常处理的注意点5.10.4 Scala 异常处理举例5.10.5 Scala 异常处理小结5.11 函数的练习题第六章 面向对象编程-基础6.1 类与对象6.1.1 Scala 语言是面向对象的6.1.2 快速入门-面向对象的方式解决养猫问题6.1.3 类和对象的区别和联系6.1.4 如何定义类6.1.5 属性6.1.6 属性/成员变量6.1.7 属性的高级部分6.1.8 如何创建对象6.1.9 类和对象的内存分配机制(重要)6.2 方法6.2.1 基本说明和基本语法6.2.2 方法的调用机制原理6.2.3 方法练习题6.3 类与对象应用实例6.4 构造器6.4.1 看一个需求6.4.2 回顾-Java 构造器的介绍+基本语法+特点+案例6.4.3 Scala 构造器的介绍+基本语法+快速入门6.4.4 Scala 构造器注意事项和细节6.5 属性高级6.5.1 构造器参数6.5.2 Bean 属性6.6 Scala 对象创建的流程分析6.7 作业03
Scala中的数组是一种非常重要的数据结构,它是用来存储同类型元素的容器,除此Scala还有其他存储数据的容器,例如元组、列表、映射等。在本期的内容分享中,我们将针对数组作基本的介绍,内容包含:
Scala 是 Scalable Language 的简写,是一门多范式的编程语言。Java平台的Scala于2003年底/2004年初发布。 Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。Scala 源代码被编译成 Java 字节码,所以它可以运行于 JVM 之上,并可以调用现有的 Java 类库。
1、scala 进行 package 打包时,可以有如下形式。【案例演示+反编译查看】
scala> val a = println("ddd") ddd a: Unit = ()
Scala也为for循环这一常见的控制结构提供了非常多的特性,这些for循环的特性被称为for推导式或for表达式。 范围数据循环
(1)Scala和Java一样属于JVM语言,使用时都需要先编译为class字节码文件,并且Scala能够直接调用Java的类库。
第二章 变量2.1 变量是程序的基本组成单位2.2 Scala 变量的介绍2.2.1 概念2.2.2 Scala 变量使用的基本步骤2.3 Scala 变量的基本使用2.4 Scala 变量使用说明2.4.1 变量声明基本语法2.4.2 注意事项2.5 Scala 程序中 +号 的使用2.6 Scala 数据类型2.6.1 scala 数据类型体系一览图2.6.2 scala 数据类型列表2.7 整数类型2.7.1 基本介绍2.7.2 整型的类型2.7.3 整型的使用细节2.8 浮点类型2.8.1 基本介绍2.8.2 浮点型的分类2.8.3 浮点型使用细节2.9 字符类型:Char2.9.1 基本介绍2.9.2 案例演示2.9.3 字符类型使用细节2.9.4 字符类型本质探讨2.10 布尔类型:Boolean2.11 Unit 类型、Null 类型和 Nothing 类型2.11.1 基本说明2.11.2 使用细节和注意事项2.12 值类型转换2.12.1 值类型隐式转换2.12.2 自动类型转换细节说明2.12.3 高级隐式转换和隐式函数2.12.4 强制类型转换2.13 值类型转换练习题2.14 值类型和 String 类型的转换2.14.1 介绍2.14.2 基本数据类型转 String 类型2.14.3 String 类型转基本数据类型2.14.4 注意事项2.15 标识符的命名规范2.15.1 标识符概念2.15.2 标识符的命名规则(要记住)2.15.3 标识符举例说明2.15.4 标识符命名注意事项2.15.5 Scala 关键字2.16 作业01
scala是支持面向对象的,也有类和对象的概念。我们依然可以基于scala语言来开发面向对象的应用程序。
val nums = new Array[Int](10) // 声明一个容量为10个整数的数组,所有元素的初始化为0 val strs = new Array[String](10) // 声明一个容量为10个字符串的数组,所有元素的初始化为null val arr = Array("hello","world") // 声明一个长度为Array[String] -- 类型是推断出来的 , 如果在声明中已经提供了初始值就不需要new
Scala解析器的使用 REPL:Read(取值)-> Evaluation(求值)-> Print(打印)->Loop(循环)。scala解析器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM执行 val result = 1 设置变量不可变 var result = 2 可变的变量 val name: String = null 声明变量类型 val name: Any = "leo" val name1,name2:String = null 声明多个变量 val num1,num2
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。
类继承了多个trait后,可以依次调用多个trait中的同一个方法,只要让多个trait中的同一个方法在最后都依次执行super关键字即可。类中调用多个tait中都有这个方法时,首先会从最右边的trait方法开始执行,然后依次往左执行,形成一个调用链条。
使用 def 关键字定义方法, 后面跟 方法名 和 小括号中的 参数列表 。 参数列表后面跟一个 冒号 和 方法的返回结果类型, 返回结果类型后面是一个 等号,表示下面是方法体, 方法体用一个 花括号 包含。 这和前面的多行表达式一样, 方法体可以看作一个 表达式。
第十一章 数据结构(下)-集合操作11.1 集合元素的映射-map11.1.1 map 映射函数的操作11.1.2 高阶函数基本使用案例1+案例211.1.3 使用 map 映射函数来解决11.1.4 模拟实现 map 映射函数的机制11.1.5 课堂练习11.2 集合元素的扁平-flatMap11.3 集合元素的过滤-filter11.4 集合元素的化简-reduce11.5 集合元素的折叠-fold11.6 集合元素的扫描-scan11.7 集合的综合应用案例11.8 集合的合并-zip11.9 集合的迭代器-iterator11.10 流-Stream11.11 视图-view11.12 线程安全的集合11.13 并行集合11.14 操作符第十二章 模式匹配12.1 match12.2 守卫12.3 模式中的变量12.4 类型匹配12.5 数组匹配12.6 列表匹配12.7 元组匹配12.8 对象匹配12.9 变量声明中的模式12.10 for表达式中的模式12.11 样例(模板)类12.12 case 语句的中置(缀)表达式12.13 匹配嵌套结构12.14 密封类
文章目录: 1、iterator迭代器 使用迭代器遍历集合 2、类和对象 创建类和对象 定义和访问成员变量 3、使用下划线初始化成员变量 4、定义成员方法 5、访问修饰符 6、类的构造器 主构造器 辅助构造器 7、单例对象 定义单例对象 8、工具类案例 9、main方法 10、伴生对象 private[this]访问权限 11、继承 示例 | 类继承 示例 | 单例对象继承 12、override和super 1、iterator迭代器 scala
当然也可以成修饰符private Scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public)
本篇来介绍一下通过Spark来读取和HDFS上的数据,主要包含四方面的内容:将RDD写入HDFS、读取HDFS上的文件、将HDFS上的文件添加到Driver、判断HDFS上文件路径是否存在。
位运算符用来对二进制位进行操作,~,&,|,^分别为取反,按位与与,按位与或,按位与异或运算,如下表实例:
在Scala中经常会涉及到变量值的输入和输出,输入是指通过键盘将数据信息传送到Scala环境的内存中,输出则是指将内存中的数据返回到指定的地方(如电脑屏幕、本地文件或数据库等)。 两种输入方法
Scala 中的函数是一等公民,可以独立定义,独立存在,而且可以直接将函数作为值赋值给变量。
for循环是一种重复控制结构,允许你高效地编写需要执行特定次数的循环。下面的示例以各种形式描述了Scala中的for循环。
变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。
Scala 语言中提供的数组是用来存储固定大小的同类型元素,数组对于每一门编辑应语言来说都是重要的数据结构之一。
Scala是一门主要以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性综合在一起的编程语言。你可以使用Scala编写出更加精简的程序,同时充分利用并发的威力。由于Scala默认运行于JVM之上,因此 它可以访问任何Java类库并且与Java框架进行互操作,比如Scala可以被编译成JavaScript代码,让我们更便捷、高效地开发Web应用。
问题导读 1.什么情况下调用apply方法? 2.apply你认为有哪些作用? 3.方法调用属于apply什么功能? apply网上很多资料,但是总感觉总讲的不是很透彻。这里自己总结下:包括摘录及个人经验,希望可以加深大家的理解 什么情况下会调用apply方法 当遇到下面表达式时,apply方法会被调用:Object(参数1,参数2。。。。参数N) 通常这样一个方法返回的是伴生对象。 举例来说:Array对象定义了apply,我们可以用下面形式来数组 Array("about”,"yun","
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 1、算术运算符 2、赋值运算符 3、比较运算符(关系运算符) 4、逻辑运算符 5、位运算符
在Java中,有switch关键字,可以简化if条件判断语句。在scala中,可以使用match表达式替代。
在 Scala 当中,函数是一等公民,像变量一样,既可以作为函数的参数使用,也可以将函数赋值给一个变量. ,函数的创建不用依赖于类或者对象,而在 Java 当中,函数的创建则要依赖于类、抽象类或者接口。
Scala IF...ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类),在后续要学习并发编程和spark、flink这些框架也都会经常使用它。
有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
ListBuffer:ListBuffer 是可变的 list 集合,可以添加,删除元素,ListBuffer 属于序
一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。
Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍:
前面我们已经学习了特质类似接口,其可以被继承,同时如果需要继承多个特质的话,则需要使用extends…with…进行继承。其类似java中的接口和抽象方法的结合体,但又比java中的其要强大,因为其可以定义抽象字段和普通字段、抽象方法和普通方法。而在java中接口中可以定义常量,不能定义变量。同时特质还可以继承class类,而在java中接口通常是用来实现的。
首先来介绍下,今天的主角“傻白甜”(SBT:Simple Build Tools), 其功能与 Maven 和 Gradle 类似。其是由 Scala 编写,对于新手入门不是太友好,如果只是写纯 Java 的 Bug ,大可不必和自己过不去,但是如果你经常使用 Spark 等大数据工具,还是有点必要学学使用的。而且 Sbt 默认会从一些奇奇怪怪的地方下载依赖,相信大家的第一次,都不会很美好( Sbt 的项目构建异常缓慢,而且还经常会失败),笔者也不例外,所以有了这篇文章,希望对你有些帮助。
3.将features和plugins两个文件夹拷贝到eclipse安装目录中的” dropins/scala”目录下。进入dropins,新建scala文件夹,将两个文件夹拷贝到“dropins/scala”下
领取专属 10元无门槛券
手把手带您无忧上云