SCALA - 技术教程文章
Scala 编译出现“java.io.IOException: no such file: .”解决方法【代码】
只用改成:1 scalac test.scala //编译的时候使用的是Scala文件名称2 scala -classpath . HelloWorld //执行的时候使用的是HelloWorld对象名称原文:https://www.cnblogs.com/smartisn/p/12200579.html
Scala入门到精通——第十三节 高阶函数【代码】【图】
本节主要内容高阶函数简介Scala中的常用高阶函数SAM转换函数柯里化偏函数1. 高阶函数简介高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数);另外一种是返回值是函数的函数。这两种在本教程的第五节 函数与闭包中已经有所涉及,这里简单地回顾一下: (1)函数参数//函数参数,即传入另一个函数的参数是函数 //((Int)=>String)=>String scala> def convertIntToString(f:(Int)=>String)=f(4)convertIntTo...
java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)【代码】
spark提交自己编写的jar的时候如果出现如上的错误,多半是你项目中使用的spark相关jar的版本和你提交到的spark的版本不匹配,如下: 项目pom.xml导入的spark-core版本号如下:<dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>2.4.5</version></dependency> 但是你spark集群的版本又是2.11的,项目中使用的jar的版本一定要和spark目录下面的jars里面的版本一致才行原文:https:/...
Scala multiple inheritance. Mixin order v.s. Super order.【代码】
Code is everything:trait Base1 {println("mixing Base1")def print() {println("Base1")} }trait A extends Base1 {println("mixing A")override def print() {println("A")super.print()} }trait B extends Base1 {println("mixing B")override def print() {println("B")super.print()} }class Base2 {println("mixing Base2")def print() {println("Base2")} }/*** C extends Base2 with A with B* => inheritance linearizat...
java环境中基于jvm的两大语言:scala,groovy
java环境中基于jvm的两大语言:scala,groovy可以在java项目里混编这两种语言;scala:静态语言,多范式语言,糅合了面向对象、面向过程;可以与java和net互操作;融汇了众多的语言特性,包括类似net的闭包、lambda表达式;正是语言特性较多,语言复杂度也较高~~groovy:动态语言,既可作为面向对象语言又可做脚本语言;拥有动态语言的好处;语法简单~~scala、groovy都是作为java的替代语言,基于jdk1.6可以使用起来像jdk1.8的高级语...
第28讲:Scala提取器Extractor实战详解【代码】
提取器是从表达式中获取值第27讲中的match代码也是一种提取器 def match_array(arr : Any) = arr match { case Array(x) => println("Array(1):",x) // 长度为1的数组,x代表数组中的值 case Array(x,y) => println("Array(2):",x,y) // 长度为2的数组,x代表数组中的第一个值 case Array(x,_*) => println("任意一维数组:",x) //任意长度数组,取第一个值 case Array(_*) => println("任意一维数组")...
scala pattern matching【代码】
scala语言的一大重要特性之一就是模式匹配。在我看来,这个怎么看都很像java语言中的switch语句,但是,这个仅仅只是像(因为有case关键字),他们毕竟是不同的东西,switch在java中,只能是用在函数体类的,且需要结合break使用。但是,在scala语言中,pattern matching除了有case关键字,其他,似乎和java又有很多甚至完全不同的东西。 scala在消息处理中为模式匹配提供了强大的支持! 下面看看模式匹配的英文定义:A pattern ma...
Scala深入浅出实战经典---001-Scala开发环境搭建和HelloWorld解析【图】
001-Scala开发环境搭建和HelloWorld解析Scala函数式编程和面向对象结合的语言函数式编程擅长数值计算面向对象擅长大型工程和项目的组织以及团队的分工协作Scala会是下一个伟大的语言吗?Spark是用Scala语言编写的Hadoop是用Java语言编写的少动一根手指Scala开发环境基于JVM的运行环境需要安装JAVA建议7或者8版本注意选择匹配的位数和系统的JAVA配置环境变量JAVA_HOMEPATH中添加bin目录CLASS_PATHdt.jartools.jar当前目录SCALASpark支...
IDEA 安装scala插件【图】
安装scala插件一般有两种方式,在IDEA里面下载或者手动安装手动安装首先是下载需要的插件包,官网下载实在太慢,这里提供我下载好的文件,会按时更新成最新版 https://pan.baidu.com/s/1gfcdVcZ下载好文件后,按如下步骤操作一、打开设置二、打开插件安装设置,选择从硬盘文件安装三、选择下载好的jar包即可特别要注意的是,此插件必须保持最新,否则会导致scala编译失败 原文:http://www.cnblogs.com/starwater/p/6766831.html
《快学Scala》Chapter 4知识点提要【代码】
package num01 import scala.collection.convert.AsScalaConverters import scala.collection.JavaConverters. import scala.collection.mutable.Mapobject scala_for_impatient {def main(args: Array[String]): Unit = {val scores0 = Map("Alice" -> 10,"Bob" -> 3,"Cindy" -> 8)val scores1 = scala.collection.mutable.Map("Alice" -> 10,"Bob" -> 3,"Cindy" -> 8)val scores2 = new scala.collection.mutable.HashMap[Strin...
scala 闭包的概念【代码】【图】
闭包本质上是一个函数和其引用的变量的统一定义,它的返回值依赖于这个函数外部的一个或者多个变量。var test = (i:Int) => i+sum 这里 i是一个形参, 随着函数的调用传入不同的值 。而more是一个自由变量。依照函数的字面量(个人理解为函数名)在运行时创建函数对象被称作闭包,通过捕获自由变量的绑定,从而对函数字面量执行的关闭动作。当自由变量的值发生改变是, 闭包可以捕获这一变化, 从而做出相应的改变。如上图, 当sum...
Scala快速入门(四)——继承、接口【代码】
Scala快速入门(四)——继承、接口一、继承1.继承的概念:省略2.模板:class Person(n:String,a:Int) {var name:String=nvar age:Int=adef showInfo():Unit={println("学生信息如下")println("名字:"+name)println("年龄:"+age)} } class Student(n:String,a:Int) extends Person(n,a){def study():Unit={println(this.name+". Im learning scala. ")} }3.方法的重写直接在方法之前用override进行修饰案例:class OverRideTest ...
Scalaz(38)- Free :Coproduce-Monadic语句组合
很多函数式编程爱好者都把FP称为Monadic Programming,意思是用Monad进行编程。我想FP作为一种比较成熟的编程模式,应该有一套比较规范的操作模式吧。因为Free能把任何F[A]升格成Monad,所以Free的算式(AST)、算法(Interpreter)关注分离(separation of concern)模式应该可以成为一种规范的FP编程模式。我们在前面的几篇讨论中都涉及了一些AST的设计和运算,但都是一些功能单一,离散的例子。如果希望通过Free获取一个完整可用...
Scala新版本学习(1):【图】
1.进官网:https://www.scala-lang.org/上面就是进入Scala社区后的一个画面,官方对Scala的简单介绍是:Scala将面向对象和函数式编程集合在一个简洁的高级语言中,Scala的静态类型有助于避免复杂应用程序中的错误。2.Scala六个特性。(1)可以和java无缝整合,即在Scala中可以调用java包中的类,或者在Java中也可以调用Scala包中的类。Scala也是运行在JVM上的,因此Java和Scala堆栈可以自由混合以实现完全无缝集成。(2)类型推断。类型...
Scala本地安装【图】
一、下载 https://www.scala-lang.org/download/ 这里我选择Scala2.10.4版本 二、安装 安装比较简单 和jdk类似 点击一路安装: 选择自己的路径 完成三、环境变量配置(和jdk类似) 找到path,在最后添加;%SCALA_HOME%\bin;%SCALA_HOME%\jre\bin 查看是否安装成功成功 原文:https://www.cnblogs.com/lyywj170403/p/9182429.html
perl 纯变量(Scalar) 转载
转载http://blog.chinaunix.net/uid-20639775-id-154591.htmlPerl有三种变量:纯变量(Scalar Varible)数组(Array)关联数组(Associative array)一、纯变量 又称标量变量,是Perl处理的最简单的数据类型。标量可以是数字(如2,3或2.5e6), 也可以是字符串(如“hello”和“网上学园”)。 Perl中的标量变量以美元符号$和一个字母开始,以后可以是字母、数字和下划线,大小写有区别,而且所有字母、数字和下划线都有效。如: $...
用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)
为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclipse,有时间自己去玩玩。但最好追随大流。 对于hadoop项目,强烈建议用eclipse。 其次,出于有博友给我留言的索求需要,为了更高效率和高质量帮助大家,梳理写下这篇博客。 这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境。 这篇博客 是在Scala...
Scala:object(单例)【代码】
Scala开篇(目录)使用Java的同学,对单例模式应该很熟悉了,在类的内部声明一个private static 的自身类型的对象,然后通过一个static的方法返回即可。在Scala中,是没有static这个东西的,但是它也为我们提供了单例模式的实现方法,那就是 object(别混了,不是万物之根的object) Scala中使用单例模式时,除了定义的类之外,还要定义一个同名的object对象,它和类的区别是,object对象不能带参数,先看一段实现代码/**这是我们...
scala的基础概念
scala方法的定义:def methed(参数:类型..) :返回类型 = {}:非递归返回类型可以省略返回类型;返回类型是Unit时,可以省略=;函数的定义:val f:类型=>类型 = {参数=>返回};val f = (参数列表) => {实现}:函数可以作为方法的参数;方法(利用了_转换成函数了)也可以作为方法的参数;数组:Array[数组类型](数据)Array(Apply);new定长数组、变长数组ArrayBuffer;访问;+=、++=、-=、insert(位置,数据)、remove(位置,数据...
Scala学习笔记
参考这篇文章:http://www.ibm.com/developerworks/cn/java/j-lo-funinscala1/这也是一个系列 严格意义上的编程范式分为:命令式编程(Imperative Programming)、函数式编程(Functional Programming)和逻辑式编程(Logic Programming)原文:http://www.cnblogs.com/charlesblc/p/6110484.html
scala中的特殊符号:下划线_【代码】
导包, 通配符 _import java.util.Math._屏蔽类import java.util.{Hashmap => _, _}给可变参数传值时, 展开foo(arr:_*)元组元素访问t._1函数参数的占位符reduce(_ + _)方法转函数val f = foo _给属性设置默认值class A {var a: Int = _ // 给属性设置默认值的0}模式匹配的通配符case _ => // 匹配所有模式匹配集合Array(a, b, rest@_*)部分应用函数math.pow(_, 2)在定义标识符的时候, 把字符和运算符隔开val a_+ = 10 a+ // 错误泛...
Scala入门到精通——第十五节 Case Class与模式匹配(二)【代码】【图】
本节主要内容模式匹配的类型for控制结构中的模式匹配option类型模式匹配1. 模式的类型1 常量模式object ConstantPattern{def main(args: Array[String]): Unit = {//注意,以下定义的是一个函数//函数的返回值利用的是模式匹配后的结果作为其返回值//还须要注意的是函数定义在main方法中//也即scala语言能够在一个函数中定义另外一个函数def patternShow(x:Any)=x match {case5 => "five"casetrue=>"true"case"test"=>"String"case...
Scala基础【代码】
package scalaobject Demo02Base { def main(args: Array[String]): Unit = { /** * 语法基础 * */ // 变量 // 类型推断,自动根据等号右边推断变量的类型 var s = "1" //手动增加类型 var i: Int = 1 /** * * var : 变量,可以在指向其它的对象 * val : 常量, 不能再指向其它的对象 * * 尽量使用val * */ var j = 1 j = 100 val k = "asdas...
一天一段scala代码(十一)
一天一段scala代码(十一) 为了更好的驾驭spark,最近在学习scala语言特性,主要看《快学scala》,顺便把一些自己认为有用的代码记下来。package examplesclass Fraction(n:Int,d:Int) {private val num =nprivate val den=ddef *(other:Fraction) = new Fraction(num*other.num,den*other.den)//重载称号操作符 }object Fraction {def apply(n:Int,d:Int) = new Fraction(n,d)def unapply(input:Fraction)={if(input.den=...
Scala中的函数表达式
最近看Spark的东西,由于之前没有接触过lambda函数表达式,所以搜了点资料,特地纪录在此 Scala中的Lambda表达式在函数式编程中,函数是基本的构造块。Scala融合了java中的面向对象编程和函数式编程。在Scala中,一个lambda表达式是种叫做“函数”或者“函数文本”。Scala中的函数属于一等公民。它们可以被分配给vals或者vars(最终变量或者非最终变量),它们可以作为其他函数的参数,也可以组合成新的函数。在Scala中一个函数文本...
Method and Apparatus for Providing Highly-Scalable Network Storage for Well-Gridded Objects【图】
An apparatus comprising a plurality of storage nodes comprising a plurality of corresponding storage disks and configured to store data in a distributed manner between the storage disks that achieves a Redundant Array of Independent Disks-0 (RAID0) like performance based on positioning information and without indexing the distributed data. A network component comprising a storage disk configured t...
scala中常用特殊符号【代码】
参考资料:scala中常用但其他语言不常见的符号含义Scala学习六:Scala中的特殊字符=>(匿名函数)参考文档:用法 匿名函数' ref='nofollow'>scala => 用法 匿名函数=> 匿名函数,在Spark中函数也是一个对象可以赋值给一个变量。Spark的匿名函数定义格式:(形参列表) => {函数体}所以,=>的作用就是创建一个匿名函数实例。比如:(x:Int) => x +1 ,就等同于下面的Java方法:public intfunction(int x) {return x+1; }示例:class Sy...
Scala基础篇-函数式编程的重要特性【代码】
1.纯函数表示函数无副作用(状态变化)。2.引用透明性表示对相同输入,总是得到相同输出。3.函数是一等公民函数与变量、对象、类是同一等级。表示可以把函数当做参数传入另一个函数,或者作为函数的返回值,甚至可以在一个函数中定义另一个函数。4.高阶函数的定义参数是函数,或者返回值是函数。5.闭包6.表达式求值包括严格求值和非严格求值两种。7.lazy求值8.递归函数,尾递归函数9.函数式编程的优点生产效率高,易于推理,适用于并...
scala函数用法【代码】
直接上代码. package com.test.scala.testobject Function {def main(args: Array[String]): Unit = {println(abs(0));println(add(5,6))println(addStr("too you"))println(addStr("I love you","[","]"))println(sum(1,2,3,5))println(sum(1 to 5 : _*))println(printStr())}//定义一个函数,函数的最终结果也是一个值def abs(a:Int)=if(a>1) "hello" else "i love go";//定义一个拥有返回值的函数,该例子返回的a+b的值def add(a...
scala学习-类与对象【代码】【图】
类 / 对象【《快学Scala》笔记】一、类1、Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中;1class Counter{ 2private var value = 0 //类成员变量必须初始化,否则报错34 def increment(){ //类中的方法默认是公有可见性5 value += 1 6 } 78 def current() = value //对于类中的“取值方法”,在定义时可省略掉括号,直接 def current = value9 }Scala类的使用:Scala的类在未提供构...