SCALA - 技术教程文章

scala中的view bound与context bound【代码】【图】

1.scala中的<%意识是“view bounds”(视界) ,它比<:的使用范围更广,还能进行隐式转换,是一种语法糖。下面的两种写法是等效的,在编译之后完全一样。object Test {def main(args: Array[String]) {}def method1[A<% Int](a:Int): Unit ={}def method2[A](a:Int)(implicit b:A=>Int): Unit ={}}View Code其中的Function1的定义如下2.与view bounds一样context bounds(上下文界定)也是隐式参数的语法糖object Test {def main(args:...

Scala学习笔记(二):运行脚本文件【代码】

在某个目录(如:F:\)下新建一个文本文件,命名为:hello.scala其内容为:println("Hello World!") 那么这个时候该怎么运行这个脚本文件呢? 通过Windows的命令行窗口进入到Scala的安装目录下的bin目录下输入“scala F:\hello.scala”,然后回车即可正确运行 请参考此文: scala在cmd模式下执行文件报<console>:1: error: ‘;‘ expected but ‘.‘ found. scalac C:\hello.scala 错误http://blog.csdn.net/wangmuming/article/det...

scala简要——类与对象

类在scala中,类并不声明为public,源文件可以包含多个类,所有这些类都具有共有可见性。对每个字段都提供了getter和setter方法,分别叫做 字段名 和 字段名_,可重新自定义。注意: 1)如果字段私有,则getter和setter也是私有的 2)如果字段val,则只有getter方法 3)如果不需任何getter和setter,可将字段声明为private[this]将scala字段标注为@BeanProperty时,会产生Java属性的定义方法getxxx和setxxx。scala中的类有一个主构造...

Scala Control Structures【代码】【图】

Scala之Control Structures一、前言   前面学习了Scala的Numbers,接着学习Scala的Control Structures(控制结构)。 二、Control Structures   Scala中的控制结构与Java中的颇为类似,但也有所不同,例如,if/then/else控制结构与Java的类似,但是其可以返回值,虽然Java中有三元运算符的特殊语法,但是在Scala中使用if就可以达到同样的效果。   val x = if (a) y else z   同样,Scala的try/catch/finally 结构与Java的也类...

scala VS python2 操作shell对比例子【代码】

Scala:/*** Created by sunxu on 2015/9/30.*/import scala.sys.process._ import java.io.File//在相应目录执行shell命令,返回值赋值给变量 val exitValue = Process("hadoop jar pathread-analytics-0.0.1.jar com.duxiu.pathread.stcs.StcsByFieldJob /pathread/2015/10-08 /user/sunxu/test ssid 13671489", new File("/opt/users/sunxu/")).!println("--------------------------------------------------------")if (exitV...

Scala数据结构(二)【代码】【图】

一、集合的基础操作1,head头信息//获取集合的第一个元素 val list = List(1,3,5) list.head //12,tail尾信息//获取集合除去头元素之外的所有元素 val list = List(1,3,5) list.tail //List(3,5)3,last最后元素//获取集合的最后一个元素 val list = List(1,3,5) list.last //54,init初始化//获取集合除去最后一个元素的前面所有元素 val list = List(1,3,5) println(list.init) //List(1,3)5,reverse反转//集合反转 ...

Scala2.11.7学习笔记(五)类和对象基础知识【代码】

特质 Scala的trait 和Java 的Interface相比,可以有方法的实现。Scala的Trait支持类和Singleton对象和多个Trait混合(使用来自这些Trait中的 方法,而不时不违反单一继承的原则)。 Scala为Singleton对象的main定义了一个App trait类型,因此上面的例子可以简化为:HelloWorld.scala object HelloWorld extends App { println("Hello World!"); } 这段代码就不能作为脚本运行,Scala的脚本要求代码最后以表达式结束。...

Scala编程思想测试类AtomicTest.scala

Scala编程思想附录1的测试类。package com.atomicscalaimport language.implicitConversionsimport java.io.FileWriterclass AtomicTest[T](val target:T) { val errorLog = "_AtomicTestErrors.txt" def tst[E](expected:E)(test: => Boolean){ println(target) if(test == false) { val msg = "[Error] expected:\n" + expected println(msg) val el = new FileWriter(errorLog,true) el.wri...

Scala 深入浅出实战经典 第46讲: ClassTag 、Manifest、ClasMainifest TagType实战【代码】

王家林亲授《DT大数据梦工厂》大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2 技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群DT大数据梦工厂① :462923555 DT大数据梦工厂②:437123764 DT大数据梦工厂③ :418110145微信公众账号: DT_Spark王家林老师微...

Scala Tail Recursion (尾递归)【代码】

Scala对尾递归进行了优化,甚至提供了专门的标注告诉编译器需要进行尾递归优化。不过这种优化仅限于严格的尾递归,间接递归等情况,不会被优化。尾递归的概念递归,大家都不陌生,一个函数直接或间接的调用它自己,就是递归了。我们来看一个简单的,计算阶乘的例子。def factorial(n: Int): Int = {if( n <= 1 ) 1else n * factorial(n-1) } 以上factorial方法,在n>1时,需要调用它自身,这是一个典型的递归调用。如果n=5,那么该...

Scala-Unit5-Scala面对对象与模式匹配【代码】

Java中的面向对象:万物皆对象。  我们要封装数据,定义模板等操作,素以我们需要面向对象。=========================================================================一、Scala中的单例对象  在java中用static关键字修饰方法或成员变量,作用是可以直接通过"类名."的方式调用方法或变量  在Scala中没有static关键字,Scala给我们提供了单例对象的模式来实现,关键字是objectobject Person {//定义成员变量val name:Strin...

scala:主构造方法和辅助构造方法【代码】

@目录构造器(构造方法)Java中构造器Scala中构造器主构造方法辅助构造方法scala代码示例scala有参数的主构造方法构造器(构造方法)作用:构造对象初始化属性(给对象的属性赋值)Java中构造器方法名和类名保持一致构造方法没有返回值类型构造方法可以重载Scala中构造器主构造方法在声明类的同时,就定义了主构造方法,换言之,类就是主构造方法在一个类中,主构造方法只能有一个辅助构造方法方法名必须叫this在辅助构造方法开始(...

scala - 校验工具类【代码】

/*** 校验工具类**/ object ValidUtils {/*** 校验数据中的指定字段,是否在指定范围内* @param data 数据* @param dataField 数据字段* @param parameter 参数* @param startParamField 起始参数字段* @param endParamField 结束参数字段* @return 校验结果*/def between(data:String, dataField:String, parameter:String, startParamField:String, endParamField:String):Boolean = {val startParamFieldStr = StringUtils.getF...

CvScalar

typedef struct CvScalar {double val[4];}CvScalar; 它是opencv常用的结构体,在于仕琪的《学习opencv》中指出,其意义是RGBA值。当然这个结构体也可以用于其他用处,因为如果把CvScalar看做是一个普通的结构体时 ,其内部只不过是存储了四个double型的值,分别为val[0],val[1],val[2],val[3],我们通常用的是前三个,val[0],val[1],val[2]的含义分别是彩色照片的三个通道,R,G,B通道。R是红色分量,G是绿色分量,B是蓝色分量,a是...

13、scala模式匹配【图】

1、模式匹配的基础语法2、对类型进行模式匹配3、对Array和List的元素进行模式匹配4、case class与模式匹配5、Option与模式匹配1、模式匹配的基础语法  Scala提供了match case语法,即模式匹配。替代java的switch case。  两者不同,java中switch case仅能匹配变量的值,比如1、2、3等;scala中的match case可以匹配各种类型,比如变量的类型、集合的元素、有值或无值。  Match case语法:变量 match{ case 值=>语法}。如果值...

快学Scala(14)--模式匹配和样例类【代码】

更好的switch def main(args: Array[String]): Unit = {var sign: Int = 0val ch: Char = ‘+‘val color = Color.BLACKsign = ch match {case ‘+‘ => 1case ‘-‘ => -1case _ => 0}color match {case Color.RED => ;case Color.BLACK => ;case _ => ;}println(sign)} 守卫case _ if Charactrt.isDigit(ch) => digit = Character.digit(ch, 10) 模式匹配obj match {case x: Int => x  case s: String => Integer.parseInt(s)...

Scala下Play框架学习笔记(Actions,Controllers and Results)

Scala下Play框架的学习是一件辛苦的事情,因为该框架比较新,scala语言也较新,所以中文资料很少,经过同事推荐,去了如下英文网站看资料:https://www.playframework.com/documentation/2.5.x/ScalaHome虽然我的同事以在云中飞的速度学完了,但对我来说还是任重而道远。Action是什么?由于Scala和Play有关的API都在play.api下面,所以其实Action的过程是这样的:play.api.mvc.Action(play.api.mvc.Request=> play.api.mvc.Result)...

Linux系统下C语言如何调用scalapack中的函数【代码】

在并行计算中经常需要调用scalapck(并行化的lapack)函数库里面的函数进行编程,这里简单介绍在C语言如何调用scalapck中的矩阵向量乘的函数。注意:scalapack中的函数是用fortran写的,矩阵是按列进行存储的。scalapack的链接需要用到blas,因此确保本机上安装好了blas、gfortran下面是一个矩阵向量乘法的例子(为了简单计算,该程序中设定进程数为4):#include <stdio.h> #include <string.h> #include <stdlib.h> #include "mpi.h"#...

scala的应用--UDF:用户自定义函数【代码】

在window10下安装了hadoop,用ida创建maven项目。 <properties><spark.version>2.2.0</spark.version><scala.version>2.11</scala.version><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_${scala.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>sp...

scala多重界定

Scala 多重界定分为以下几种:1. T <: A with B T是A或B的子类 2. T >: A with B A或B是T的子类 一般不用3. T >: A <: B 同时有上界和下界 A下是界,B是上界 ,A是B的子类4. T:A : B 上下文界定 T必须同时满足存在AT和BT的隐试转换值5. T <% A <% B 视图界定 T既可以转换成B也可以转换成A 类型不可以有多个上界或下界,如果想有多个上界或下界,这样语...

6、scala面向对象-对象【代码】

一、对象1、objectobject,相当于class的单个实例,通常在里面放一些静态的field或者method,第一次调用object的方法时,就会执行object的constructor, 也就是object内部不在method中的代码,但是object不能定义接受参数的constructor。 object的constructor只会在其第一次被调用时执行一次, 以后再次调用就不会再次执行constructor了。object通常用于作为单例模式的实现,或者放class的静态成员,比如工具方法。### scala> :pas...

scala刷LeetCode--26 删除排序数组中的重复项【代码】

一、题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。二、示例示例 1给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 ...

Spark 入门(Python、Scala 版)【代码】【图】

本文中,我们将首先讨论如何在本地机器上利用Spark进行简单分析。然后,将在入门级水平探索Spark,了解Spark是什么以及它如何工作(希望可以激发更多探索)。最后两节将开始通过命令行与Spark进行交互,然后演示如何用Python写Spark应用,并作为Spark作业提交到集群上。同时也会提供相应的 Scala 版本。1、设置Spark环境在本机设置和运行Spark非常简单。你只需要下载一个预构建的包,只要你安装了Java 6+和Python 2.6+,就可以在Wi...

4-双向链表-Scala实现【代码】

import scala.util.control.Breaks.{break, breakable}object DoubleLinkedListDemo {def main(args: Array[String]): Unit = {val doubleLinkedList = new DoubleLinkedList()val node1 = new HeroNode2(1,"宋江","及时雨")val node2 = new HeroNode2(2,"卢俊义","玉麒麟")val node3 = new HeroNode2(3,"吴用","智多星")val node4 = new HeroNode2(4,"林冲","豹子头")val node5 = new HeroNode2(4,"林小冲","豹子头")doubleLinked...

快学Scala习题解答—第四章 映射和元组【图】

4 映射和元组 4.1 设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另一个映射,采用同一组键,但是价格上打9折 映射的简单操作 Shell代码 scala> val map = Map("book"->10,"gun"->18,"ipad"->1000) map: scala.collection.immutable.Map[java.lang.String,Int] = Map(book -> 10, gun -> 18, ipad -> 1000) scala> for((k,v) <- map) yield (k,v * 0.9) res3: scala.collection.immutable.Map[java.lang....

【Scala】Scala之Numbers【代码】【图】

一、前言  前面已经学习了Scala中的String,接着学习Scala的Numbers。二、Numbers  在Scala中,所有的数字类型,如Byte,Char,Double,Float,Int,Long,Short都是对象,这七种数字类型继承AnyVal特质,这七种数字类型与其在Java中有相同的范围,而Unit和Boolean则被认为是非数字值类型,Boolean有false和true两个值,你可以获取到各个数字类型的最值。  复杂的数字和日期  如果需要更强大的数类,可以使用spire,scalal...

快学Scala 1

1.  Scala解释器读到一个表达式,对它进行求值,将它打印出来,接着再继续读下一个表达式。这个过程被称作“读取-求值-打印-循环”,即REPL。 2.  从技术上来讲,scala程序并不是一个解释器,实际发生的是:你输入的内容被快速地编译成字节码,然后这段字节码交由Java虚拟机执行。 3.  声明值和变量  val answer = 8 * 5 + 2 //val定义常量  answer:Int = 42  var counter = 0 //var声明变量  counter = 1 //ok,...

第5课:彻底精通Scala隐式转换和并发编程及Spark源码阅读【图】

隐式转换函数implicit def function例如implicit def rddToPairRDDFunctions[K, V](rdd: RDD[(K, V)])scala> class Person(val name: String)defined class Personscala> class Enginner(val name: String, val salary: Double) { | def code = println(name + " Coding ...") | }defined class Enginnerscala> implicit def person2Engineer(p: Person):Enginner = { | println("person2Enginner " + p.name) | n...

Chisel3 - Scala语言专家【图】

https://mp.weixin.qq.com/s/j8mt_qvwliKIKtlN6JcyqQ 介绍Intellij IDEA安装Scala插件后,如何在阅读和编码两方面助益开发者。 1. 语言专家 Scala是一门多范式编程语言,在支持面向对象编程的同时,也支持函数式语法。再加上隐式规则和宏等特性,以及众多的语法糖。使得Scala的学习曲线异常陡峭。 除了语言规范、教程图书、网络资料之外,一个强大的能够智能提示补全、时时检查提醒的编辑器或者IDE,可以极大的提高学习速度和编码...

Scala:Functions and Closures【代码】

1object Functions {2 def main(args: Array[String]) {3// 本地函数 4 def localFun(msg: String) = println(msg)5 localFun("Hi")6 7// 函数对象 8 var list = List(1, 2, 3)9 list.foreach((x: Int) => println(x)) 10 list.foreach(x => println(x)) 11 list.foreach(println(_)) 12 list.foreach(println _) 13 list.foreach(println) 14 list.foreach(localFun) 1516// 部分应用函数,将函...