
scala
文章平均质量分 56
青龙悟空
goooooooooooooooooooo
展开
-
scala基础教程之-数据类型
一、基本的数据类型数据类型 描述 Byte 8位有符号值。范围从-128到127 Short 16位有符号值。范围从-32768至32767 Int 32位有符号值。范围从-2147483648 to 2147483647 Long 64位有符号值。 从-9223372036854775808到9223372036854775807 Float 32位IEEE754单精度浮点数 Double 64位IEEE754双精度浮点数 Ch..原创 2021-02-09 00:08:31 · 222 阅读 · 0 评论 -
scala和java的区别
Scala的特性:scala和java的区别1.变量的声明2.函数的声明3.数据类型4.数组5.未完待续Scala的特性:再讲Scala与java的区别之前我们先了解一下Scala有六大特性:java和scala可以无缝混编(都是基于JVM) 类型推测(不必指定类型,自动推测类型) 支持并发和分布式(Actor) 特质:trait(集结了java中抽象类和接口的产物) 模式匹配(match case :类似于java中的switch case) 高阶函数(参数时原创 2021-02-06 23:28:11 · 647 阅读 · 0 评论 -
scala中class与object区别
calss scala编译器会字段帮我们生产一个私有字段和2个公有方法get和setscala 中没有 static 关键字,所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来之前都是无法访问的因此在class中的main方法没什么用了scala 的object 中所有成员变量和方法默认都是 static 的所以可以直接访问main方法class Lis { var age=19}object Test{ def main(args: Array[原创 2021-02-06 20:45:16 · 747 阅读 · 0 评论 -
Scala方法和函数的不同
首先要区分Scala函数与方法的区别,这在Scala中是两个不同概念,只有理解了这两个概念才能理解柯里化。方法 scala> def add(x:Int, y: Int) = x + y add: (x: Int, y: Int)Int scala> add(1, 2) res0: Int = 3 函数 scala> val add_f = (x: Int, y: Int) => x + y add_f: (Int,原创 2021-01-17 16:28:20 · 246 阅读 · 0 评论 -
Scala 函数柯里化
函数柯里化:把一个参数列表的多个参数,变成多个参数列表实例首先我们定义一个函数:def add(x:Int,y:Int)=x+y那么我们应用的时候,应该是这样用:add(1,2)现在我们把这个函数变一下形:def add(x:Int)(y:Int) = x + y那么我们应用的时候,应该是这样用:add(1)(2),最后结果都一样是3,这种方式(过程)就叫柯里化。看了前面的例子,很多人估计忍不住就要开喷了:你特么逗我呢?好好的给一个方法传两个参数不挺好么,干嘛搞这么复杂。原创 2021-01-17 16:24:30 · 253 阅读 · 0 评论 -
Scala 闭包
闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。闭包通常来讲可以简单的认为是可以访问一个函数里面局部闭包:函数式编程的标配1)说明闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包变量的另外一个函数。函数柯里化:把一个参数列表的多个参数,变成多个参数列表。2)案例实操 (1)闭包object TestFunction { def main(args: Array[String]): Unit = ...原创 2021-01-17 16:13:31 · 1014 阅读 · 0 评论 -
单例对象(伴生对象)
Scala语言是完全面向对象的语言,所以并没有静态的操作(即在Scala中没有静态的概念)。但是为了能够和Java语言交互(因为Java中有静态概念),就产生了一种特殊的对象来模拟类对象,该对象为单例对象。若单例对象名与类名一致,则称该单例对象这个类的伴生对象,这个类的所有“静态”内容都可以放置在它的伴生对象中声明。6.6.1 单例对象语法1)基本语法object Person{ val country:String="China"}2)说明(1)单例对象采用obj...原创 2021-01-17 16:11:36 · 889 阅读 · 0 评论 -
Scala闭包(柯里化)说明和应用
闭包Scala的闭包可以和python的闭包联合起来理解,就是在一个函数中定义了另外一个函数,内部的函数作为外部函数的返回值,此外内部的函数可以使用外部函数的变量(个人理解)。下面是个闭包的简单实例:object ClosureFunctionOps { def main(args: Array[String]): Unit = { println(closureFunction(5)(5)) println(closureFunction(6)(5)) printl原创 2021-01-17 12:38:51 · 593 阅读 · 0 评论 -
scala List集合的用法
一、前言:人们常说,Scala是一个难掌握的语言,一是其面向函数和面向对象结合的原因,二是其丰富的语法和内置函数。对于Conllection 这一章的内容,更多的是利用内置函数灵活地运用,避免自己重复造轮子(要求性能高除外)对于集合,通常来说有以下几个常用操作是必须掌握的:1.增删改查单个元素2.单个集合的各种遍历方式3.单个集合分拆组合与翻转4.两个集合的拼接,删除等操作二、增删改查单个元素2-1 源码<span style="font-family: Arial, He原创 2020-12-31 18:20:33 · 594 阅读 · 0 评论 -
Scala模式匹配
模式匹配是检查某个值(value)是否匹配某一个模式的机制,一个成功的匹配同时会将匹配值解构为其组成部分。它是Java中的switch语句的升级版,同样可以用于替代一系列的 if/else 语句。语法一个模式匹配语句包括一个待匹配的值,match关键字,以及至少一个case语句。import scala.util.Randomval x: Int = Random.nextInt(10)x match { case 0 => "zero" case 1 => "on原创 2020-12-24 09:34:09 · 88 阅读 · 0 评论 -
Scala 元组
在 Scala 中,元组是一个可以容纳不同类型元素的类。 元组是不可变的。当我们需要从函数返回多个值时,元组会派上用场。元组可以创建如下:val ingredient = ("Sugar" , 25):Tuple2[String, Int]这将创建一个包含一个 String 元素和一个 Int 元素的元组。Scala 中的元组包含一系列类:Tuple2,Tuple3等,直到 Tuple22。 因此,当我们创建一个包含 n 个元素(n 位于 2 和 22 之间)的元组时,Scala 基原创 2020-12-23 15:45:13 · 694 阅读 · 0 评论 -
多参数列表(柯里化)
方法可以定义多个参数列表,当使用较少的参数列表调用多参数列表的方法时,会产生一个新的函数,该函数接收剩余的参数列表作为其参数。这被称为柯里化。下面是一个例子,在Scala集合trait TraversableOnce定义了foldLeftdef foldLeft[B](z: B)(op: (B, A) => B): BfoldLeft从左到右,以此将一个二元运算op应用到初始值z和该迭代器(traversable)的所有元素上。以下是该函数的一个用例:从初值0开始, 这里f...原创 2020-12-23 15:33:56 · 357 阅读 · 0 评论 -
scala 高阶函数
高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民”,所以允许定义高阶函数。这里的术语可能有点让人困惑,我们约定,使用函数值作为参数,或者返回值为函数值的“函数”和“方法”,均称之为“高阶函数”。最常见的一个例子是Scala集合类(collections)的高阶函数mapval salaries = Seq(20000, 70000, 40000)val doubleSalary = (x: Int) => x * 2val newSalar原创 2020-12-23 15:21:58 · 826 阅读 · 0 评论 -
Scala的sorted sortBy sortWith 用法 区别
以 lst 为例: val lst = List(1,3,2,4,5)sorted:自然排序println(lst.sorted) //1 2 3 4 5sortBy:按照元素自身进行排序println(lst.sortBy(a=>a).reverse) //5 4 3 2 1sortWith:自定义的比较函数进行排序,比较函数booleanprint(lst.sortWith(_<_)) // 1 2 3 4 5...原创 2020-12-22 16:31:34 · 548 阅读 · 0 评论 -
Scala集合list map原理加实操
不可变列表ListScala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表具有递归的结构(也就是链接表结构)而数组不是。① 语法//定义方式一var 变量名 = List(数据,数据,数据)//定义方式二var 变量名 = 数据::数据::数据::Nil② 案例/** 不可变list */ object ListTest { def main(args: Array[String]): Unit = {原创 2020-12-21 10:59:37 · 919 阅读 · 0 评论 -
Scala元组Tuple
元组在Scala语言中是一种十分重要的数据结构,类似数据库里面的一行记录(row),它可以将不同类型的值组合成一个对象,在实际应用中十分广泛scala纯面向对象的语言元组:元组是不同类型的值的集合与列表list一样,元组也是不可变的,但与列表不同的是元组可以包含不同类型的元素a._1 a._2 访问第一/二个元素迭代元组: a.productIterator.foreach创建元组: val a=new Tuple(1,“hello”) val a=(1,“hh”)元素交换swap:当只有两原创 2020-12-21 10:45:36 · 850 阅读 · 0 评论 -
Scala类型自动转换强制转换
当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数值类型,这个就是自动类型转换(隐式转换)。数据类型按精度(容量)大小排序为:(1)自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度大的那种数据类型,然后再进行计算。(2)把精度大的数值类型赋值给精度小的数值类型时,就会报错,反之就会进行自动类型转换。(3)(byte,short)和char之间不会相互自动转换。(4)byte,short,char他们三者可以计算,在计算时首先转换为int类型。原创 2020-12-20 23:24:50 · 3679 阅读 · 0 评论 -
scala函数-入门
函数基础5.1.1 函数基本语法1)基本语法案例实操 需求:定义一个函数,实现将传入的名称打印出来。object TestFunction {def main(args: Array[String]): Unit = { // (1)函数定义 def f(arg: String): Unit = { println(arg) } // (2)函数调用 ...原创 2020-12-18 10:53:49 · 171 阅读 · 0 评论 -
Scala递归
1)说明 一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用2)案例实操object TestFunction { def main(args: Array[String]): Unit = { // 阶乘 // 递归算法 // 1) 方法调用自身 // 2) 方法必须要有跳出的逻辑 // 3) 方法调用自身时,传递的参数应该有规律 // 4) scal...原创 2020-12-18 10:42:05 · 178 阅读 · 0 评论 -
scala函数柯里化&闭包
目录函数柯里化&闭包函数柯里化&闭包闭包:函数式编程的标配1)说明闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包函数柯里化:把一个参数列表的多个参数,变成多个参数列表。案例实操 (1)闭包object TestFunction { def main(args: Array[String]): Unit = { def f1()={ var a:Int...原创 2020-12-18 10:40:37 · 267 阅读 · 0 评论 -
Scala流程控制语句
目录分支控制if-else4.1.1 单分支4.1.2 双分支4.1.3 多分支4.2 嵌套分支4.3 Switch分支结构For循环控制4.4.1 范围数据循环(To)4.4.2 范围数据循环(Until)4.4.3 循环守卫4.4.4 循环步长4.4.5 嵌套循环4.4.6 引入变量4.4.7 循环返回值4.4.8 倒序打印4.5 While和do..While循环控制4.5.1 While循环控制4.5.2 do..while循环原创 2020-12-18 10:21:53 · 455 阅读 · 0 评论 -
Scala运算符
运算符Scala运算符的使用和Java运算符的使用基本相同,只有个别细节上不同。3.1 算术运算符1)基本语法 运算符 运算 范例 结果 + 正号 +3 3 - 负号 b=4; -b -4 + 加原创 2020-12-18 10:14:13 · 262 阅读 · 0 评论 -
Scala基本数据类型,对比Java版
Scala基本类型和Java对比,就是开头Scala要大写,Java小写整数类型(Byte、Short、Int、Long)Scala的整数类型就是用于存放整数值的,比如12,30,3456等等。浮点类型(Float、Double)Scala的浮点类型可以表示一个小数,比如123.4f,7.8,0.12等等。字符类型(Char)1)基本说明字符类型可以表示单个字符,字符类型是Char。2)案例实操(1)字符常量是用单引号 ' ' 括起来的单个字符。(2)\t :一个制表位,实现.原创 2020-12-18 10:08:38 · 581 阅读 · 1 评论 -
Scala 键盘输入
键盘输入在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。1)基本语法StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()2)案例实操需求:可以从控制台接收用户信息,【姓名,年龄,薪水】。import scala.io.StdInobject TestInput { def main(args: Array[String]): Unit = { // 1 输入姓名...原创 2020-12-18 10:03:19 · 3548 阅读 · 0 评论 -
scala变量
变量定义基本语法:var|val 变量名 [:变量类型] = 变量值使用var或val定义一个变量使用var声明变量-可以被重新赋值。使用val声明常量-引用不可变,val修饰的变量,相当于Java中final修饰的变量// 定义常量s1,使用字符串“1”赋值,自动推断为String类型,值不可变 scala> val s1 = "1" s1: String = 1// 定义常量s2,手动指定类型为String,此时需要保证所赋值类型匹配 scala> val s2原创 2020-12-17 23:39:06 · 101 阅读 · 0 评论