SCALA - 技术教程文章

Scala 模式匹配和样例类+协变、逆变、非变+上下界【代码】

1. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句、类型检查等。并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配。1.1. 匹配字符串package com.gec.casesimport scala.util.Randomobject CaseDemo01 extends App{ val arr = Array("hadoop", "zookeeper", "spark") val name = arr(Random.nextInt(arr.length)) name match { case "hadoop" => print...

Spark的枚举类型实例!scala的枚举。【代码】

Spark的枚举类型实例!scala的枚举。Enumeration定义:[deploy] SparkSubmitAction { = Value = Value }Enumeration使用:appArgs. { SparkSubmitAction.=> (appArgs) SparkSubmitAction.=> (appArgs) SparkSubmitAction.=> (appArgs) }原文:http://36006798.blog.51cto.com/988282/1872758

Scalaz(39)- Free :a real monadic program

一直感觉FP比较虚,可能太多学术性的东西,不知道如何把这些由数学理论在背后支持的一套全新数据类型和数据结构在现实开发中加以使用。直到Free Monad,才真正感觉能用FP方式进行编程了。在前面我们已经花了不小篇幅来了解Free Monad,这次我想跟大家讨论一下用Free Monad来编写一个真正能运行的完整应用程序。当然,这个程序必须具备FP特性,比如函数组合(function composition),纯代码(purecode),延迟副作用(delayed side ...

Scala常用变量生命周期【代码】

val words = *** //在words被定义时取值 lazy val words = *** //在words被首次使用时取值 def words = *** //在每一次words被使用时取值 原文:https://www.cnblogs.com/itboys/p/9862132.html

scala编程第15章

package myscala15import myscala.Element.elemimport myscala.Elementsealed abstract class Expr case class Var(name: String) extends Exprcase class Number(num: Double) extends Exprcase class UnOp(operator: String, arg: Expr) extends Exprcase class BinOp(operator: String, left: Expr, right: Expr) extends Exprclass ExprFormatter { //包含了递增优先级的组中的操作符 private val opGroups = Array( ...

第2课 Scala面向对象彻底精通及Spark源码SparkContext,RDD阅读总结

第2课:Scala面向对象彻底精通及Spark源码阅读本期内容:1 Scala中的类、object实战详解 2 Scala中的抽象类、接口实战详解 3 综合案例及Spark源码解析一:定义类class HiScala{private var name = "Spark" def sayName(){println(name)}def getName = name}Scala中,变量与类中的方法是同等级的,可以直接赋值给方法。scala中的get与set与Java中的get,set有很大的差异:在Scala中,如果程序中给变量或方法前面定义了private,那么s...

scala学习手记34 - trait方法的延迟绑定【代码】【图】

trait的方法的延迟绑定就是先混入的trait的方法会后调用。这一点从上一节的实例中也可以看出来。下面再来看一个类似的例子:abstractclass Writer {def write(message: String): String }trait UpperWriter extends Writer {abstract override def write(message: String): String = super.write(message.toUpperCase) }trait FilterWriter extends Writer {abstract override def write(message: String): String = super.write(m...

scala函数式编程(二) scala基础语法介绍【代码】【图】

上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容。这里会先重点介绍scala的一些语法。当然,这里是假设你有一些java或者python的基础,毕竟大部分人不会将scala当作第一门学习编程的语言。不过这些语法知识记不住也没关系,本身语法这种东西就应该在使用中被记住。这里写这篇的目的也只是梳理一遍,方便大家对语法有个初步的印象,后面可以随时查询。...

Spark中RDD转换成DataFrame的两种方式(分别用Java和Scala实现)【代码】

一:准备数据源 在项目下新建一个student.txt文件,里面的内容为:1,zhangsan,202,lisi,213,wanger,194,fangliu,18 二:实现 Java版: 1.首先新建一个student的Bean对象,实现序列化和toString()方法,具体代码如下:import java.io.Serializable; @SuppressWarnings("serial") publicclass Student implements Serializable { String sid; String sname; int sage; public String getSid() { return sid; } p...

Scala可变参数方法或者函数传参问题【代码】

scala中可变参数传入数组需要在数组后面追加:_*,否则scala会将在数组整体视为一个参数。 例如代码: def echo(objs: Any*): Unit = {println(objs)}val strs = Array("1", "2")echo(strs: _*)echo(strs) 输出:WrappedArray(1, 2)WrappedArray([Ljava.lang.String;@4411d970)原文:https://www.cnblogs.com/leodaxin/p/10899059.html

每天学一点Scala之Try【图】

参考文章:http://www.jianshu.com/p/0de79845eaa4Try[A] 同样是一种容器。Option[A] 也是一种容器Try[A] 表示一种计算, 如果计算成功,返回是A的值如果出错的话,抛出异常ThrowableTry 存在两个子类型:1、 Success[A],表示计算成功2、 Failure[A],表示计算失败,会抛出异常例子如下: 650) this.width=650;" src="/upload/getfiles/default/2022/11/7/20221107074901837.jpg" title="001.png" />Try这个关键字,在mar...

Scala入门系列(七):面向对象之继承

<div id="wmd-preview-section-25245" preview-content"="" style="box-sizing: border-box; line-height: 1.6; color: #2c3f51; font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeiti, "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, Song, sans-serif; font-size: 18px; outline: none !important;"><div id="wmd-preview-section-25285" preview-content"="" style="box-sizing: border-box; line-height...

scala 入门Eclipse环境搭建【图】

scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载:scala for eclipse 下载: http://scala-ide.org/download/sdk.html 根据自己的机器配置选择合适的IDE: 我这里选择For scala2.11 版本的Windows 32 bit的IDE,单击即下载。 scala安装:安装包下载地址,进入官网:http://www.scala-lang.org/进入DOWNLOAD下,选择scala 2.11 版本,单击下载: Windows上安装scala 2.11: 单击运行scala 安装包,一...

return语言结构 VS. scala默认返回值【代码】

Scala函数默认使用最后一个语句的运行结果作为返回值。例如def distance(a:Int,b:Int):Int={  a*a+b*b}以a*a+b*b的运行结果作为返回值。这种返回值的方式渊源于其他函数式语言Lisp/Haskell等(个人猜测)。 在近期工作中,我写了如下的代码:def brand_name_to_id(map:HashMap[List[Any],List[Any]])(srcs:List[Any]):List[Any]={srcs(0)match {case brand:String=>if(brand.contains("_br_")){try {List(map.get(List(brand.spl...

scala函数进阶与lazy的作用【图】

内容如下。 lazy修饰的变量可以延迟初始化,如下面所示,文件未必存在,file变量未必有内容。 原文:http://www.cnblogs.com/nethk/p/5609258.html

scala slick mysql utf8mb4 支持【代码】

语言 scala sql包 slick 3.2.0数据库 mysql 数据库同步程序报错java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x87\xB5\xF0\x9F...‘for column ‘content‘ at row 1 这个错误见的太多,emoji字符和utf-8不兼容所致,utf8mp4字符集支持emoji 源库(另外一家公司提供)改了表的字符集,未通知我方,从库和源库字符集不同,同步时部分字符报错 改mysql,改同步程序字符集即可 改mysql简单ALTER TABLE table CONVERT T...

scala中隐式转换之总结

1、隐式转换的时机:1.当方法中的参数的类型与目标类型不一致时2.当对象调用类中不存在的方法或成员时,编译器会自动将对象进行隐式转换 2、隐式解析机制即编译器是如何查找到缺失信息的,解析具有以下两种规则:1.首先会在当前代码作用域下查找隐式实体(隐式方法 隐式类 隐式对象)2.如果第一条规则查找隐式实体失败,会继续在隐式参数的类型的作用域里查找类型的作用域是指与该类型相关联的全部伴生模块,一个隐式实体的类型T它...

scala01-2021.7.7-基础篇【代码】

安装: 想安装scala 需要先安装JDK8或者11在下载对应的scala版本 。然后配置环境变量如果报错就调低scala版本。在idea中安装scala插件,最后添加框架支持。1.class和objectpackage chapter01object HelloWorld {def main(args: Array[String]): Unit = {println("hello world")System.out.println("hello scala from java")} }scala中没有static 所以用object(全局唯一)代替static ,class作用与java相同创建一个类; 原文:htt...

Scala实战高手****第7课:零基础实战Scala面向对象编程及Spark源码解析

/** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装、继承、多态呢? * --->肯定不是,封装、继承、多态,只不过是支撑面向对象的 * 一些语言级别的语法和功能,真正的面向对象其实有三个核心特征: * 第一:对象不用关心消息从哪里来,也不关心消息到哪去,只关心消息处理本身 * ,也就是说面向对象是弱耦合的且对象是消息驱动的,或者说对象是数据驱动的 * 第二:一个对象的行...

Scala 开发环境搭建与Hello world

原文:http://blog.chinaunix.net/uid-20662820-id-4937268.html

大数据学习——scala入门程序【代码】

安装scala.msihttps://blog.csdn.net/sinat_32867867/article/details/80305302notepad++object HelloScala{def main(args:Array[String]){println("hello scala,i love you!")} }安装scala.msi 原文:https://www.cnblogs.com/feifeicui/p/10488730.html

scala 几个函数小例子【代码】

后续补充 /*** Created by dengy on 2017/12/18.*/ object grammarPractise {def main(args: Array[String]) {//=======================================================//def fun(str1: String, str2: String) = {str1 + "\t" + str2}println( fun("spark", "hadoop") ) //spark hadoopval add = (str1:String, str2:String)=> str1+ "\t" +str2println(add("spark", "hadoop")) //spark hadoopdef g( f:(String,String)=>Str...

scala【代码】【图】

scala1.字符串1.1传值字符串object ScalaString {def main(args: Array[String]): Unit = {// 传值字符串(格式化字符串)printf("name=%s\n", name)} } 1.2插值字符串object ScalaString {def main(args: Array[String]): Unit = {// 插值字符串// 将变量值插入到字符串println(s"name=${name}")} } 1.3多行字符串object ScalaString {def main(args: Array[String]): Unit = {// 多行格式化字符串// 在封装JSON或SQL时比较常用// |...

Scala(四)--流程控制【代码】【图】

4.1 分支控制if-else  让程序有选择的的执行,分支控制有三种:单分支、双分支、多分支  块表达式:    1) 基本语法:{代码块 }    2)块表达式有返回值,返回值为{}中最后一个表达式的结果值4.1.1 单分支  1)基本语法if(条件表达式){执行代码块 }    说明:当条件表达式为ture时,就会执行{ }的代码。  2)案例实操    需求:输入人的年龄,如果该同志的年龄大于等于18岁,则输出“18岁,成年了”packag...

scala学习笔记4--scala的函数一【代码】

默认值:def sayMyName(name : String = "Jack"){println(name) } 可变参数:def sumMoreParameters(elem : Int*) = {var sum = 0for(e <- elem){println(e)sum += e}sum } 下划线的使用:def add(a:Int,b:Int) = a+b def add2 = add(_:Int,2) 递归函数:需要显式的给予函数的返回类型def fac(n:Int):Int = if( n <= 0) 1 else n*fac(n-1) 函数柯里化:把这个参数一个个独立开来写,这就是柯里化def mulitply(x:Int)(y:Int) = x*yd...

scalaTest的初步使用【代码】

1. 概述ScalaTest是scala生态系统中最流行和灵活的测试工具,可以测试scala、js、java代码。2. ScalaTest的特性a. ScalaTest的核心是套件(suite),即0到多个测试的集合b. 测试可以是含有一个名称的任意内容,该名称可以用来启动、待处理或取消,也可表示成功或失败等c. trait Suite声明run和其他"生命周期"的方法,这些方法定义编写和执行测试的默认方式;"生命周期"方法可被重写,以定制测试如何编写和运行d. ScalaTest提供继承Su...

scala 2.11报错error: not found: type Application

FROM: http://j-q-j.org/scala/scala-2-11-application-error.html这两天学习scala,官网下载的最新版本2.11,书用的是《Programming in scala》,看到类和对象,这一章最后一段代码12345importChecksumAccumulator.calculateobjectFallWinterSpringSummer extendsApplication { for(season <- List("fall", "winter", "spring")) println( season + ": "calculate(season))}scalac FallWinterSpringSummer.scala报错如下1err...

windows 安装scala 和maven【代码】【图】

windows 安装scala1.下载地址:https://www.scala-lang.org/download/ 2.下载后安装:3.配置环境变量新建:SCALA_HOME D:\06-scala\01-software\01-scala # 安装地址 PATH 添加 D:\06-scala\01-software\01-scala\bin # 安装目录中的bin目录 windows 安装maven1.下载地址:http://maven.apache.org/download.cgi 2.解压完成 原文:https://www.cnblogs.com/yoyo1216/p/12652265.html

scala数据类型

# Scala数据类型## 1.数值类型### 1.1 与Java一样Scala也有8种数值类型* Byte* Char* Short* Int* Long* Float* Double* Boolean### 1.2 其它数值类型* BigInt = java.math.BigInteger* Decimal = java.math.BigDecimal### 1.3 用法* 1.4.toInt => 1* 99.toChar => c* ‘A‘.toInt => 65### 1.4 操作符a + b => a.+(b)* \+* \-* \** \/* \%* \&* \|* \^* \>>* \<<* +=* -=### 1.5 函数和方法* __方法和对象相关,函数和对象无关。_...

Scala泛型[T]的使用【代码】

package com.dtspark.scala.basics/*** 1,scala的类和方法、函数都可以是泛型。* * 2,关于对类型边界的限定分为上边界和下边界(对类进行限制)* 上边界:表达了泛型的类型必须是"某种类型"或某种类型的"子类",语法为“<:”,* 下边界:表达了泛型的类型必须是"某种类型"或某种类型的"父类",语法为“>:”,* * 3, "<%" :view bounds可以进行某种神秘的转换,把你的类型在没有知觉的情况下转换成目标类型,* 其实你可以认为view bou...