SCALA - 技术教程文章

【编程语言Scala之连接Mysql数据库】

import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/**?* 一、变量和函数?* Scala 为定义变量提供了两种语法。使用 val定义常量,一经定义后,该变量名不能被重新赋值。?* 使用 var定义变量,可被重新赋值。在 Scala 中,鼓励使用 val,除非你有明确的需求使用 var。对于 Java 程序员来说,刚开始可能会觉得有违直觉,?* 但习惯后你会发现,大多数场合下我们都不需要...

使用SBT构建Scala应用(转自git)【代码】

# 使用SBT构建Scala应用## SBT简介SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工作基本是类似的。虽然Maven同样可以管理Scala项目的依赖并进行构建, 但SBT的某些特性却让人如此着迷,比如:* 使用Scala作为DSL来定义build文件(one language rules them all); * 通过触发执行(trigger execution)特性支持持续的编译与测试; * 增量编译;^[SBT的增...

学习Scala02 基本类型【代码】

scala中有9大基本类型:Byte 、Short 、Int 、Long、 Char 、String 、Float、 Double 、Boolean与java的基本类型看起来基本是一致的,但实际上除了String,其他的所有的类型,都是使用scala包下的成员。scala虽然是强类型的语言,但是通过强大的类型推倒,scala基本不需要刻意地去指定类型.变量scala通过 val或者var来定义值和变量,val定义的值是不可变的,而var定义的变量是可变的。比如:val a=0 val a=1这样scala就会报错,而使...

第86讲:Scala中For表达式的生成器、定义和过滤器

今天我们来看一下For表达式中的生成器,定义和过滤等内容。让我们来看下代码def main(args:Array[String]){ val lauren = Persons("Lauren",false) val rocky = Persons("Rocky",true) val vivian = Persons("Vivian",false,lauren,rocky) val persons = List(lauren,rocky,vivian) val forResult = for(person<-persons;name = person.name;if !person.isMale;child <- person.children) yield(person.name...

Scala函数---既存类型【图】

语法:Type ::= InfixType ExistentialClausesExistentialClauses ::= forSome { ExistentialDcl{semi ExistentialDcl} }ExistentialDcl ::= type TypeDcl| val ValDcl既存类型具有 T forSome {Q}的形式,Q是一个类型声明的序列(§4.3)。设t1[tps1]>n<:Un是Q中声明的类型(任何类型参数部分[tpsi]都可以没有)。每个类型ti的域都包含类型T和既存子句Q。类型变量ti就称为在类型T forSome {Q}中被绑定。在T中但是没被绑定的类型变量就被...

Eclipse安装scala插件【图】

1、下载插件http://scala-ide.org/download/current.html? 2、将下载的压缩包解压,拷贝到eclipse\dropins目录下3、启动eclipse,安装默认提示设置原文:https://www.cnblogs.com/chuhongyun/p/11411818.html

从零学scala(八)注解、XML处理

一:注解(注解相关的实在是不想看,后面想起来了再补上吧)什么是注解 //这个大家都比较熟悉,我就写一个官方的解释,写一下scala和java的不同吧 //注解是那些你插入到代码中以便有工具可以对他们进行处理的标签 //java注解并不影响源码编译成字节码,他们仅仅是忘字节码中添加数据, //以便外部工具可以利用他们。但是scala的注解可以影响编译过程什么可以被注解 //类、方法...

scala读取jar包外配置文件的方式【代码】

在scala的开发过程中,经常会修改程序的参数,将这些参数放到配置文件中避免了重复编译,然而打包的过程,如果不做配置文件外置,将无法修改配置内容,还是需要重新打包这里给出读取配置文件的三种方式 方式一: 这是最常见的读取配置文件方式val postgprop = new Properties()val ipstream: InputStream = this.getClass().getResourceAsStream("/config.properties")postgprop.load(ipstream)在程序的任何地方输入代码,就能使通...

Scala确实是门好语言

看完了一本Scala的书,整体感觉很不错,语法很简洁,对用惯了脚本语言的人来说语言特性稍微有点复杂,不过对Java用户应该没有压力。 最牛叉的有两点:并发、面向领域编程 原文:http://www.cnblogs.com/x3d/p/4200510.html

Scalaz(11)- Monad:你存在的意义【代码】

前面提到了scalaz是个函数式编程(FP)工具库。它提供了许多新的数据类型、拓展的标准类型及完整的一套typeclass来支持scala语言的函数式编程模式。我们知道:对于任何类型,我们只需要实现这个类型的typeclass实例就可以在对这个类型施用所对应typeclass提供的所有组件函数了(combinator)。突然之间我们的焦点好像都放在了如何获取typeclass实例上了,从而忽略了考虑为什么要使用这些typeclass及使用什么样的typeclass这些问题了...

Scala语言规范----Array类【图】

Array类通用数组类定义如下。final class Array[A](len: Int) extends Seq[A] {def length: Int = lendef apply(i: Int): A = ...def update(i: Int, x: A): Unit = ...def elements: Iterator[A] = ...def subArray(from: Int, end: Int): Array[A] = ...def filter(p: A => Boolean): Array[A] = ...def map[B](f: A => B): Array[B] = ...def flatMap[B](f: A => Array[B]): Array[B] = ...}如果T不是类型参数或抽象类型,...

【Scala学习之二】 Scala 集合 Trait Actor【代码】

环境  虚拟机:VMware 10   Linux版本:CentOS-6.5-x86_64   客户端:Xshell4  FTP:Xftp4  jdk1.8  scala-2.10.4(依赖jdk1.8) spark-1.6一、字符串、数组、List、Set、Map、tupletuple1、元组定义与列表一样,与列表不同的是元组可以包含不同类型的元素。元组的值是通过将单个的值包含在圆括号中构成的。2、创建元组与取值val tuple = new Tuple(1) 可以使用newval tuple2 = Tuple(1,2) 可以不使用new,也可以直...

一般java的maven项目做scala开发,怎么做?【代码】

1. 下载配置scala sdk,然后在idea新建的java的maven项目上面右键Add Framework Support,然后找到scala将我们下载的scala路径配置上就行了2. 上面那种方案不是我推荐的,推荐做法是在pom.xml中加入如下类容,这样我们就不需要下载配置scala sdk了<build><plugins><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>4.3.1</version><executions><execution><goals><goal>compile...

scala中to和util操作【代码】

// Range:to:默认步进为1val to1 = 1 to 10println(to1)// 定义一个不进为2的Rangeval to2 = 1 to 10 by 2println(to2)println(to2.toList)// Range:untilval until1 = 1 until 10println(until1)val until2 = 1 until 10 by 2println(until2) 原文:http://www.cnblogs.com/xubiao/p/7994391.html

【译】Scalable Frontend 1 ?—?Architecture Fundamentals【代码】【图】

目录引子正文软件架构是什么?前端开发中的层次状态层依赖注入接下来推荐链接参考资料 引子读了关于可扩展前端讨论的一些文章,翻译记录。原文:Scalable Frontend #1?—?Architecture FundamentalsOriginMy GitHub 正文关于软件开发中“可扩展性”一词最常见的两个含义,与随着时间推移代码库的性能和可维护性有关。你可以同时拥有它们,但是注重良好的可维护性,可以让优化性能变的更容易,且不会影响应用程序其余部分。更重要的...

Scala中的空【代码】

Scala的有即Any,Scala的无是Null,null,Nil,Nothing,None,Unit.那么这几种空有什么区别呢?一、Null&null 很多人一辈子都没有走出这个无。Null是一个Trait,你不能创建她它的实例。但是Scala在语言层面上存在一个Null的实例,那就是null。Java中的null意味着引用并没有指向任何对象。但存在一个悖论,一切都是对象,那没有对象是不是也是对象呢?Scala定义了一个类似于对象语义的Null,和一个值语义的null。这样面向对象在空...

《Scalable IO in Java》笔记【代码】【图】

Scalable IO in Javahttp://gee.cs.oswego.edu/dl/cpjslides/nio.pdf基本上所有的网络处理程序都有以下基本的处理过程:Read requestDecode requestProcess serviceEncode replySend replyClassic Service Designs简单的代码实现:class Server implements Runnable {publicvoid run() {try {ServerSocket ss = new ServerSocket(PORT);while (!Thread.interrupted())new Thread(new Handler(ss.accept())).start(); //创建新线程来...

Scala笔记整理(三):Scala面向对象—类详解1【代码】

[TOC] getter和setter简单类和无参方法需要说明的是,官方给出的参考资料对于这方面讲解得十分详细,目前入门来说,不需要达到这样的理解,只需要可以进行开发即可,这一部分我给出的是官方的一些文档说明,但是后面的定制和注解,就直接简单说明能用就好了。class PersonOps {private var age = 0 //你必须初始化一个字段def increment() {age += 1} //方法默认是公有的def currentAge() = age }1)在Scala中,类并不声明为public...

Spark:scala集合转化为DS/DF【代码】

scala集合转化为DS/DF 1caseclass TestPerson(name: String, age: Long, salary: Double)2 val tom = TestPerson("Tom Hanks",37,35.5)3 val sam = TestPerson("Sam Smith",40,40.5)4 val PersonList = mutable.MutableList[TestPerson]()5 PersonList += tom6 PersonList += sam7 8 val personDS = PersonList.toDS()9println(personDS.getClass) 10personDS.show() 1112 val personDF = PersonList.toDF() 13println(personDF.ge...

Scala系列:对象【代码】

单例对象scala没有静态方法和静态字段。scala使用object实现,object定义了单个实例。1object Accounts { 2private var lastNumber = 0; 3 def newUniqueNumber() = { lastNumber += 1; lastNumber } 4 }使用:  for (i <- 0 to 10) println(Accounts.newUniqueNumber)对象的构造方法在该对象被第一次使用时调用。伴生对象在Java中,常遇到类即有静态属性和方法,又有非静态属性和方法。Scala中,可以通过类与类同名的“伴生”...

Scala集合(一)【代码】【图】

Scala集合的主要特质Iterator,用来访问集合中所有元素val coll = ... // 某种Iterable val iter = col.iteratorwhile(iter.hasNext)iter.next()Seq是一个有先后次序的值得序列,比如数组或列表。IndexSeq允许我们通过整型的下标快速访问任意元素,如ArrayBuffer是带下标的。Set是一组没有先后次序的值,在SortedSet中,元素以某种排过序的顺序被访问。Map是一组(K,V)对偶,SortedMap按照键的排序访问。每个Scala集合特质或类,都...

Scala中Zip相关的函数

在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等。我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用。  1、zip函数将传进来的两个参数中相应位置上的元素组成一个pair数组。如果其中一个参数元素比较长,那么多余的参数会被删掉。看下英文介绍吧:  Returns a list formed from this list and another iterable collection by combining corresponding elemen...

scala语法

一:常量与变量1.常量 2.两种变量定义方式 3.注意点  变量名后加上:  类型首字母是大写 4.占位符_  但是需要制定类型 5.scala数据类型6.其他类型 7.懒加载lazy  定义的时候不会初始化,执行过程中才加载,使用数据 二:函数定义1.函数格式 2. 三:默认值1. 四:可变参数1.使用方法* 2. 原文:http://www.cnblogs.com/juncaoit/p/6217023.html

【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第1小节:动手体验Scala(3)

3,Scala中的表达式实战首先看一下Scala中优雅的条件的表达式: 接下来看一下while循环表达式:下面看一下for条件表达式: 在for中也可以使用until: 如果想在条件表达式中筛选出1到10中所有偶数,可以采用下面的写法:原文:http://www.cnblogs.com/spark-china/p/4121853.html

【Scala】单例对象与伴生对象【代码】

Scala的单例对象Scala不能定义静态成员,而是代之定义单例对象(singleton object)。以object关键字定义。 对象定义了某个类的单个实例,包含了你想要的特性:object Accounts{private var lastNumber = 0def newUniqueNumber() = { lastNumber += 1; lastNumber} } 当你在应用程序中需要一个新的唯一账号时,调用Account.newUniqueNumber()即可。 对象的构造器在该对象第一次被使用时调用。在下面几个场景下可以使用Scala单例对象...

Scala2.12.4 安装与配置【代码】【图】

下载解压并移动到/software目录:tar -zxvf scala-2.12.4.tgz mv scala-2.12.4 /software/scala在/etc/profile文件添加:export SCALA_HOME=/software/scala export PATH=$SCALA_HOME/bin:$PATH保存并更新/etc/profile:source /etc/profile查看是否成功:scala –version原文:http://www.cnblogs.com/NexTen/p/7857085.html

考察学生学生对scala语言入门知识的理解。现在有学生若干,属性包含:姓名、性别、年龄。需要根据不同的条件对学生进行分组。【代码】

1package com.zk022/*使用eclipse(或其他开发工具也可)创建工程(5分)32)遍历studentsList,输出上述内容(5分)43)创建girlList,boyList,lt18List,gt18List(5分)54)遍历studentsList,把所有男生存入boyList,女生存入girlList ,大于等于18岁的存入gt18List,小于18岁的存入lt18List (5分)65)并计算所有男生的平均年龄(5)7注释完美(5分)8使用eclipse(或其他开发工具也可)创建工程(5分)92)遍历studentsList,输出上...

Scala 协变 和 逆变 二

Scala 协变 和 逆变 二协变和逆变主要是用来解决参数化类型的泛化问题。由于参数化类型的参数(参数类型)是可变的,当两个参数化类型的参数是继承关系(可泛化),那被参数化的类型是否也可以泛化呢?Java中这种情况下是不可泛化的,然而Scala提供了三个选择,即协变、逆变和非变。下面说一下三种情况的含义,首先假设有参数化特征Queue,那它可以有如下三种定义。 1)trait Queue[T] {} 这是非变情况。这种情况下,当类型S是类型...

Case class和Case object代码实战解析之Scala学习笔记-20

package com.leegh.pattern_match/** * @author Guohui Li */abstract class Personcase class Student(age: Int) extends Personcase class Worker(age: Int, salary: Double) extends Personcase object Shared extends Personobject case_class_object { def main(args: Array[String]): Unit = { def caseOps(person: Person) = person match { case Student(age) => println("I am " + age + "years od") ...

Scala日期和字符串互转【图】

import java.util.Dateimport java.text.SimpleDateFormatcase class myclass(id :String,actionDate:java.util.Date)val TIME_FORMAT= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")val actionTime = TIME_FORMAT.parse("2010-10-10 10:10:10")val actionTimeString = TIME_FORMAT.format(actionTime) val mTime = actionTime.getTime() 原文:https://www.cnblogs.com/BrentBoys/p/10853947.html