
scala
醉糊涂仙
这个作者很懒,什么都没留下…
展开
-
var和val
在线程并发时 可以减少甚至杜绝 多线程并发安全问题 特别适合于应用在处理高并发场景原创 2017-08-25 17:28:52 · 836 阅读 · 0 评论 -
Scala函数简写
1,函数全部声明如下:def 方法名(参数:类型[泛型]):返回值={ 表达式1;表达式2 表达式3 表达式4}def main(args: Array[String]): Unit = { print("hello world!");}2,自定义函数声明如下: def fun(a : Int, b : Int) : Int = { ...原创 2018-05-25 17:23:52 · 1476 阅读 · 0 评论 -
StringContext
val a = 10 val s1 = "the value is:" + a println(s1)//the value is:10 //s是StringContext中的一个方法 println(StringContext("the value is:", "").s(a))//the value is:10 //可以简写如下 ...原创 2018-05-28 13:54:30 · 425 阅读 · 0 评论 -
Scala泛型
注:Java与Scala的泛型只是在格式上不同,Java用<>Scala用[]val a:Array[Int] = Array(1,2,3)val a:Array[String] = Array(1,2,3) //报错,类型不匹配原创 2018-05-28 14:00:19 · 253 阅读 · 0 评论 -
idea编辑Scala中没有类似sout,fori,psvm自动代码块
idea编辑Javamain函数:psvmforeachforiidea便捷Scalamain函数:mainfor没有自动补全原创 2018-05-28 14:58:02 · 1233 阅读 · 0 评论 -
Scala的for循环
// <-被称为生成器generator,在执行过程中,1到10的值依次赋给xfor(i <- 1 to 10) { println("i = " + i);}//for循环上可以加if过滤val files = new java.io.File("c:/").listFilesfor (f <- files if f.getName.endsW原创 2018-05-28 15:21:02 · 1376 阅读 · 0 评论 -
Scala的option类型
问题:如下如果分母为零会抛出异常,如果不想抛出异常中断程序该怎么处理?? def div(a:Int, b:Int) : Int ={ a/b } def main(args: Array[String]): Unit = { println(div(10,5)) println(div(10,0)) //抛异常 }//Option类型在S...原创 2018-05-28 16:01:10 · 1549 阅读 · 0 评论 -
Scala的object
Scala中没有静态的方法,变量,如果需要可以创建一个单例object达到类似目的。 与类名一致的object 称为该类的伴生对象,可以把伴生对象理解为该类的一个辅助对象,一些工具方法可以放入伴生对象中来定义。...原创 2018-05-28 16:12:48 · 214 阅读 · 0 评论 -
Scala匿名函数
1,语法(x:Int) => println(x)2,可以将该匿名函数赋值给变量var fn = (x:Int) => println(x)3,调用该函数fn(x)原创 2018-05-28 16:43:13 · 217 阅读 · 0 评论 -
Scala中方法与函数的区别
Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。1,Scala 中使用 val 语句可以定义函数,def 语句定义方法//定义一个方法def sum(a:Int, b:Int) = a + b//因为方法即操作符,所以在调用方法时有时可以省略括号,而函数必须带上括号//例如加号+就是一个方法,a + b也可以写成a....原创 2018-06-05 10:32:46 · 1129 阅读 · 0 评论 -
Scala下划线
注:可以理解成把参数省略,然后用下划线替代//demo1(本地单词计数)//获取文件,并逐行读取单词,存入一个list中val list = Source.fromFile("F:/word.txt").getLines().toListprintln(list)//List(big, data, big, spark, scala, spark, hadoop, haddop, hi...原创 2018-06-05 14:07:15 · 351 阅读 · 0 评论 -
Scala闭包
1,闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。2,一旦函数引用了外部的变量或常量,那么就称此函数为闭包函数。 val x = 3 val fn = (y: Int) => x + y//闭包(x:Int) ...原创 2018-06-05 14:34:54 · 748 阅读 · 0 评论 -
Scala的锁synchronized
Java用法public void sync() { synchronized(this) { ... }}Scala用法,翻译过去就是上面的Java用法def sync() = { this.synchronized { val x = 2 }}转载 2018-07-10 17:29:14 · 11391 阅读 · 0 评论 -
Scala官网下载慢怎么办
复制链接,使用迅雷下载超级快!!!原创 2018-07-04 10:06:00 · 4293 阅读 · 5 评论 -
Scala历史版本在哪里??
进入下载链接:https://www.scala-lang.org/download/ 翻到页面最底端,看到图如下:原创 2018-07-04 10:10:08 · 1946 阅读 · 0 评论 -
idea创建Scala项目,注意事项
一,win主机安装Scala版本需要和集群版本一致二, 三, 四,原创 2018-07-18 14:21:00 · 327 阅读 · 0 评论 -
Scala同时声明多个变量
val (a, b, c) = (1, 2, "a")原创 2018-05-25 15:07:30 · 6615 阅读 · 0 评论 -
Scala中没有System.out.println只需要println或者print就好了
Scala中没有System.out.println只需要println或者print就好了原创 2018-05-25 13:56:33 · 7446 阅读 · 0 评论 -
kafka和spark都是用scala写的
kafka : 分布式消息队列 内部代码经常用来处理并发的问题 用scala可以大大简化其代码。 spark : 处理多线程场景方便 另外 spark主要用作内存计算 经常要用来实现复杂的算法 利用scala这种函数式编程语言 可以大大简化代码。原创 2017-08-25 17:33:13 · 2729 阅读 · 0 评论 -
scala和java的关系
scala底层用到的还是java,只是在java上套了一层壳 .java –> .class –> jvm .scala –> .class –> jvm原创 2017-08-25 17:35:31 · 5087 阅读 · 1 评论 -
scala有9种基本数据类型
Byte Short Int Long Char Float Double Boolean String(1) 其中String处于java.lang包下 其他的则处在scala包下 由于scala会自动导入java.lang和scala包所以这些类型可以在程序中直接使用(2)其实可以认为scala中并没有真正意义上的基本类型(如java中的基本类型) 以上的九种基本类型其实也是一个类.scala原创 2017-08-25 17:59:06 · 2480 阅读 · 0 评论 -
scala可以自动推断常量和变量的类型
正常语法:val s1:String = "456"由于数据类型可以推断,可省略如下:val s2 = "789"原创 2017-08-25 18:04:07 · 2414 阅读 · 0 评论 -
scala中String的单引号和三引号的区别?
例如下代码,如果要换行,必须在代码中添加换行符\n\rval s1:String = "456 sldjf\n\r slkfjl lskjfls "如果换成三引号,可以在代码中直接回车val s2:String = """456 sldjf lkfjl lskjfls """原创 2017-08-25 18:14:31 · 7188 阅读 · 1 评论 -
scala中操作符即方法,方法即操作符
加号可以当作方法一样调用val x1 = 1 + 2;val x2 = 1.+(2);原创 2017-08-25 18:19:03 · 514 阅读 · 0 评论 -
scala中操作符可以分为三类
(1)中缀操作符var x1 = 1 + 2;var x2 = 1.+(2);(2)后缀操作符val s6 = "abcdef"val s7 = s6.substring(2, 3)val s8 = s6 substring(2, 3)(3)前缀操作符 由于操作符号就是方法,那么方法就得被调用,前缀操作符稍有不同val i1 = -1val i2 = 1.unary_-val i3 = +原创 2017-08-25 18:32:32 · 339 阅读 · 0 评论 -
scala中循环不建议使用while和do...while,而建议使用递归
解析,因为while和do…while中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量 例子:计算1-10的和var num = 0;var x = 0;while(x<=10){ num += x; x += 1;}函数式编程的重要思想就是尽量不要产生额外的影响,上面的代码就不符合函数式编程的思想 例子:递归实现1-10的和def mx(num:In原创 2017-08-25 19:33:30 · 2146 阅读 · 0 评论 -
scala中的函数哪些有返回值,哪些没有返回值??
if判断后,将执行代码的最后一个表达式的值作为返回值返回 注意,这里不需要特意的去用return去将值返回val s13 = if (true) { "zhang" }原创 2017-08-25 19:00:12 · 4818 阅读 · 0 评论 -
scala变量访问范围
java中根据不同大括号区分变量作用范围 不允许有叠加 外部看不到内部 内部能看到外部 scala中根据不同大括号区分变量作用范围 允许有叠加 当有叠加时外部看不到内部,内部看不到外部例子:java代码 //java中这种写法报错,变量名重复 int a = 0; { int a = 0; }例子:scala代码原创 2017-08-26 17:23:35 · 889 阅读 · 0 评论 -
scala 函数柯里化
1、代码/** * 函数柯里化 */ object CurringFuncTest { def main(args: Array[String]): Unit = { //正常定义1 def multiple1(x:Int,y:Int) = x*y println(multiple1(2,3)) //其中一个函数作为返回值原创 2017-08-26 17:26:09 · 353 阅读 · 0 评论 -
scala函数等号省略
例1: 此时没有写返回值,但是有等号,函数会自己推断返回值,此时的返回值是Intdef add(x:Int, y:Int) = { x+y}例2: 此时没有写返回值,也没有等号,无论函数内部有没有返回值,返回值都是Unitdef add(x:Int, y:Int){ x+y}原创 2017-08-28 13:26:24 · 1852 阅读 · 0 评论 -
scala自定义控制结构
1.自定义控制结构是通过 高阶函数+柯里化 来实现的def addAndPrint(x:Int,y:Int)(z:(Int)=>Unit) = { val sum = x+y z(sum)}2.调用该函数addAndPrint(1, 2)((a:Int)=>{println("sum="+a)})3.最后一个小括号其实可以改成大括号addAndPrint(1, 2){(a:Int)原创 2017-08-28 19:11:48 · 388 阅读 · 0 评论 -
scala样例类
只要在声明类时 在class关键字前加上case关键字 这个类就成为了样例类 样例类和普通的区别在于: (1)默认实现序列化接口 (2)默认自动覆盖 toString equals hashCode方法 (3)不需要new可以直接生成对象case class Demo1(){}//这种写法,并且顺带给该类定义了一个构造函原创 2017-08-29 13:51:03 · 2141 阅读 · 0 评论 -
val arr = Array("aaa", "bbb", "ccc") 和 val list = List(1, 2, 3)
类似样例类,但又不是样例类,其实调用的是Array底层的工厂方法,具体细节不深究原创 2017-08-29 13:41:04 · 561 阅读 · 0 评论 -
Scala项目打包
修改后再打包,会有异常:E:/IdeaWorkspace/Dataclean/src/main/scala/META-INF/MANIFEST.MF' already exists in VFS删除上图中的META-INF和out文件再重新打包就OK了。...原创 2019-05-02 22:55:20 · 2804 阅读 · 0 评论