Scala 入门
Scala 编程,coding for fun。
Simple_Zz
这个作者很懒,什么都没留下…
展开
-
Scala reduce fold scan
reduce 化简将二元函数引用于集合中的函数。// 源码 reducedef reduce[A1 >: A](op: (A1, A1) => A1): A1 = reduceLeft(op)// 源码 reduceLeftoverride /*TraversableLike*/def reduceLeft[B >: A](f: (B, A) => B)...原创 2018-12-28 18:42:30 · 536 阅读 · 0 评论 -
Scala stream view
Stream是一个集合这个集合,可以用于存放,无穷多个元素,但是这无穷个元素并不会一次性生产出来,而是需要用到多大的区间,就会动态的生产,末尾元素遵循lazy规则(即:要使用结果才进行计算的) 。1) 使用#::得到一个stream def numsForm(n: BigInt) : Stream[BigInt] = n #:: numsForm(n + 1) 2)...原创 2018-12-30 18:43:32 · 334 阅读 · 0 评论 -
Scala zip iterator
Zip 拉链(合并)在开发中,当我们需要将两个集合进行 对偶元组合并,可以使用拉链。// 拉链val list1 = List(1, 2 ,3)val list2 = List(4, 5, 6)val list3 = list1.zip(list2) //((1,4), (2,5),(3,6))println("list3=" + list3)注意事项:拉链的本质就是两...原创 2018-12-28 11:34:03 · 352 阅读 · 0 评论 -
Scala Match
Scala中提供了比java,c更加强大的switch语句——match,而且不用担心因为忘记写break语句而发生case穿透。1.更好的 switch 与if,类似match也是表达式// 匹配字符的函数def charMatch(c: Char) = c match { case '+' => 1 case '-' => -1 case _ => ...原创 2018-11-30 11:34:50 · 592 阅读 · 0 评论 -
Scala flatMap filter
flatMap 与 filter 这两个都是高阶函数,参数均接收一个函数。 flatMap:flat即压扁,压平,扁平化。效果就是将集合中的每个元素的子元素映射到某个函数并返回新的集合。 object testFlatMap { def main(args: Array[String]): Unit = { val names = List("About", "...原创 2018-11-20 10:21:59 · 902 阅读 · 0 评论 -
Scala Set 集
集是不重复元素的结合。集不保留顺序,默认是以哈希集实现Java 中 Setjava中,HashSet 是实现 Set<E> 接口的一个实体类,数据是以哈希表的形式存放的,里面的不能重复数据。Set 接口是一种一个不包含重复元素的 collection, HashSet 中的数据也是没有顺序的。import java.util.HashSet;public class ...原创 2018-11-19 17:03:33 · 193 阅读 · 0 评论 -
Scala Map 映射
Java中的 MapHashMap 是一个散列表 (数组 + 链表) ,它存储的内容是键值对 (key-value) 映射,Java中的HashMap是无序的。import java.util.HashMap;public class TestJavaMap { public static void main(String[] args) { HashMap&l...原创 2018-11-19 16:48:08 · 1176 阅读 · 0 评论 -
Scala 队列
队列是一个有序列表,在底层可以用数组或是链表来实现 其输入和输出要遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。 在Scala中,由设计者直接给我们提供队列类型使用。 在Scala中,有 scala.collection.mutable.Queue 和 scala.collection.immutable.Queue ,一般来说我们在开发中通常使用可变集合中的队列 ...原创 2018-11-19 15:32:12 · 1869 阅读 · 0 评论 -
【面向对象】 低耦合高内聚
耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息内聚性也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。低耦合粗浅的理解是:一...原创 2012-01-10 15:23:59 · 5525 阅读 · 0 评论 -
Scala 开发环境安装配置
Scala可以安装在任何基于UNIX/Linux或基于Windows的系统上。在您的机器上开始安装Scala之前,必须在计算机上安装Java 1.8或更高版本。基于命令行安装Scala从 http://www.scala-lang.org/downloads 下载Scala安装包。有两种安装方式:IDE安装包 命令行安装包(本教程使用的安装方式)在撰写本教程的时候,我下载的是“sb...原创 2018-09-14 16:30:15 · 5571 阅读 · 0 评论 -
Scala 对象创建流程分析
object ObjectCreate { def main(args: Array[String]): Unit = { var p: Person = new Person("jack", 20) }}class Person { var age: Short = 90 var name: String = _ def this(n: String, a:...原创 2018-11-14 11:43:58 · 829 阅读 · 0 评论 -
Scala 伴生类 伴生对象
object AccompanyObject { def main(args: Array[String]): Unit = { println(ScalaPerson.sex) //true 在底层等价于 ScalaPerson$.MODULE$.sex() ScalaPerson.sayHi() //在底层等价于 ScalaPerson$.MODULE$....原创 2018-11-16 18:50:48 · 1518 阅读 · 0 评论 -
【面向对象】 三大特性、五大原则
三大特性:封装、继承、多态五大基本原则:SRP、OCP、LSP、DIP、ISP什么是面向对象面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产...原创 2018-09-04 12:16:16 · 5815 阅读 · 0 评论 -
Scala 概述
Scala是可扩展语言的缩写,是一种混合功能编程语言。 它由Martin Odersky创建。 Scala顺利整合面向对象和函数式语言的功能。 Scala被编译后在Java虚拟机上运行。 许多现有公司依靠Java进行关键业务应用转向或正在转向Scala,以提高其开发生产力,应用程序可扩展性和整体可靠性。在这里,我们提出了一些要点,说明为什么Scala成为应用程序开发人员的首选。 Scal...原创 2018-09-14 15:20:39 · 843 阅读 · 0 评论 -
函数式编程与面向对象编程的比较
函数式编程作为结构化编程的一种,正在受到越来越多的重视。工程中不在只是面向对象编程,更多的人尝试着开始使用函数式编程来解决软件工程中遇到的问题。 什么是函数式编程?在维基百科中给出了详细的定义,函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。...原创 2018-11-13 09:25:08 · 1669 阅读 · 0 评论 -
Scala Case类和对象
Scala Case类只是常规类,默认情况下是不可变的,可通过模式匹配可分解。它使用相等(equal)方法在结构上比较实例。它不使用new关键字实例化对象。默认情况下,case类中列出的所有参数默认使用public和immutable修辞符。语法case class className(parameters)Scala Case类示例case class CaseCl...原创 2018-09-18 14:43:16 · 1178 阅读 · 0 评论 -
Scala while循环语句
当给定条件为真时,while循环重复一个语句或一组语句。它在执行循环体之前测试条件状态。 只要给定的条件为真,while循环语句重复执行目标语句。语法以下是while循环的语法 -while(condition){ statement(s);}在这里,语句(statement(s))可能是一个单一语句或一个语句块。条件(condition)可以是任何表达式,true是任...原创 2018-10-03 11:37:41 · 2105 阅读 · 0 评论 -
Scala do...while循环语句
与在循环顶部测试循环条件的while循环语句不同,do...while循环检查循环底部的条件。 一个do...while循环类似于while循环,除了do...while循环保证至少执行一次。语法以下是do...while循环的语法。do { statement(s);} while( condition ); 请注意,条件(condition)表达式出现在循环的末...原创 2018-10-03 11:38:52 · 552 阅读 · 0 评论 -
Scala for循环语句
for循环是一种重复控制结构,可以让您有效地编写一个需要执行特定次数的循环。在Scala中有各种形式的for循环,如下所述 -使用范围的for循环Scala中带范围for循环的最简单的语法是 -for( var x <- Range ){ statement(s);}在这里,Range可以是数字范围,并且表示为i到j。 左箭头←运算符被称为生成器,因为它从一个范围...原创 2018-10-03 11:40:55 · 1298 阅读 · 0 评论 -
Scala break语句
Scala中没有内置的break语句,但是如果您运行的是Scala 2.8版本,则可以使用break语句。当循环中遇到break语句时,循环将立即终止,程序控制跳到循环之后的下一个语句执行。流程图语法以下是break语句的语法 -// import following packageimport scala.util.control._// create a Bre...原创 2018-10-03 11:41:55 · 762 阅读 · 0 评论 -
Scala 基础语法
如果您熟悉Java语言语法和编程,那么学习Scala将会很容易。Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的。当编写Scala程序时,它可以被定义为通过调用彼此的方法进行通信的对象的集合。现在我们简单地看一下类,对象,方法和实例变量的含义。类 - 可以将类定义为描述与该类相关的行为/状态的模板/蓝图。 对象 - 对象有状态和行为。一个对象是类的一个实例。 ...原创 2018-09-14 16:54:29 · 343 阅读 · 0 评论 -
Scala 数据类型
Scala与Java具有相同的数据类型,具有相同的内存占用和精度。以下是提供Scala中可用的所有数据类型的详细信息的表格:序号 数据类型 说明 1 Byte 8位有符号值,范围从-128至127 2 Short 16位有符号值,范围从-32768至32767 3 Int 32位有符号值,范围从-2147483648至21474836...原创 2018-09-14 16:59:01 · 538 阅读 · 0 评论 -
Scala 变量
变量是保存存储值的内存位置的名称。这意味着当创建变量时,可以在内存中保留一些空间。根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容。因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符。变量声明Scala具有用于声明变量的不同语法。它们可以被定义为值,即常数或变量。 这里,myVar使用关键字var声明。 它是一个可以改变值的变量,这称为可变变量。...原创 2018-09-14 17:00:40 · 282 阅读 · 0 评论 -
Scala 访问修辞符
本章将介绍Scala访问修饰符。包,类或对象的成员可以使用私有(private)和受保护(protected)的访问修饰符进行标注,如果不使用这两个关键字的其中一个,那么访问将被视为公开(public)的。这些修饰符限制了对某些代码区域的成员访问。要使用访问修饰符,请将其关键字包含在包,类或对象的成员的定义中,我们将在下一节中看到。私有成员私有(private)成员只能在包含成员定义的...原创 2018-09-14 17:02:13 · 172 阅读 · 0 评论 -
Scala 运算符
在Scala语言中,运算符是一个符号,告诉编译器执行特定的数学或逻辑函数。Scala语言提供丰富的内置运算符,并提供以下类型的运算符 -算术运算符 关系运算符 逻辑运算符 按位运算符 赋值运算符 其它运算符1.算术运算符下表显示了Scala支持的所有算术运算符。假设变量A的值是10,变量B的值是20,那么 -运算符 描述 示例 + 将两个操作数相加...原创 2018-09-14 17:04:26 · 900 阅读 · 0 评论 -
Scala 循环语句
本章将介绍Scala编程语言中的循环控制结构。可能会有一种情况,当你需要执行一段代码多次。 一般来说,语句依次执行:函数中的第一个语句先执行,后跟第二个语句,依此类推。编程语言提供了允许更复杂的执行路径的各种控制结构。循环语句允许我们多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式 -Scala编程语言提供以下类型的循环来处理循环需求。 单击以下表中的链接来...原创 2018-09-14 17:05:53 · 341 阅读 · 0 评论 -
Scala 函数
函数是一组执行的语句。您可以将代码按功能分成一个个单独的函数。 如何在不同函数之间划分你的代码取决于你,但从逻辑上讲,通常每个函数执行一个特定的任务。Scala具有两种函数,术语 - 方法和函数是可以互换的。 Scala方法是具有名称,签名,可选地一些注释和一些字节码的类的一部分,作为Scala中的函数是可以分配给变量的完整对象。 换句话说,定义为某个对象的成员的函数称为方法。函数定义可以...原创 2018-09-14 17:09:41 · 267 阅读 · 0 评论 -
Scala 函数 - 按名称调用函数
函数的参数是按值参数; 也就是说,参数的值在传递给函数之前确定。 但是,如果我们需要编写一个函数来接受一个表达式作为参数,我们不希望在函数调用之前进行评估怎么办? 在这种情况下,可使用Scala中提供的名称参数。一个按名称机制将代码块传递给调用,并且每次调用访问该参数时,代码块被执行并且该值被计算。 在这里,延迟打印一个消息,表明该方法已经输入。 接下来,延迟打印带有其值的消息。 最后,延迟返...原创 2018-09-15 00:34:22 · 1225 阅读 · 0 评论 -
Scala 函数 - 命名参数的函数
在正常的函数调用中,调用的参数按照被调用函数定义的参数顺序逐个匹配。命名参数允许您以不同的顺序将参数传递给函数。语法只是每个参数前面都有一个参数名称和一个等号。尝试以下程序,它是一个简单的例子来显示具有命名参数的函数。object Demo { def main(args: Array[String]) { printInt(b = 5, a = 7); } ...原创 2018-09-15 00:35:37 · 493 阅读 · 0 评论 -
Scala 函数 - 可变参数的函数
Scala允许指定函数的最后一个参数可重复。 这允许客户端将可变长度参数列表传递给函数。 这里,打印字符串函数里面的args类型,被声明为类型 String *,实际上是 Array [String]。尝试以下程序,这是一个简单的例子来演示如何使用带有可变参数的函数。object Demo { def main(args: Array[String]) { printS...原创 2018-09-15 00:36:49 · 1660 阅读 · 1 评论 -
Scala 函数 - 递归函数
递归在纯功能编程中起着重要作用,Scala支持递归函数。 递归表示一个函数可以重复调用自身。尝试以下程序,它是一个很好的递归示例,它计算给定参数(数字)的阶乘。示例object Demo { def main(args: Array[String]) { for (i <- 1 to 10) println( "Factorial of " ...原创 2018-09-15 00:37:36 · 1285 阅读 · 1 评论 -
Scala 函数 - 默认参数值函数
Scala允许您指定函数参数的默认值。 这样一个参数可以从函数调用中选择性地省略,在这种情况下,相应的参数值将使用默认值。如果指定其中一个参数,则使用该参数将传递第一个参数,第二个参数将从默认值中获取。尝试以下示例,它是为函数指定默认参数的示例 -示例object Demo { def main(args: Array[String]) { println( "Re...原创 2018-09-15 00:38:20 · 2069 阅读 · 0 评论 -
Scala 函数 - 高阶函数
Scala允许定义高阶函数。它是将其他函数作为参数或其结果是函数的函数。尝试以下示例程序,apply()函数接受另一个函数f和值v,并将函数f应用于v。示例object Demo { def main(args: Array[String]) { println( apply( layout, 10) ) } def apply(f: Int =>...原创 2018-09-15 00:40:42 · 225 阅读 · 0 评论 -
Scala 函数 - 嵌套函数
Scala允许您定义函数内部的函数,而在其他函数中定义的函数称为局部函数。这是一个阶乘计算器的实现,我们使用传统的技术来调用第二个嵌套方法来完成工作。尝试以下程序来了解如何实现嵌套函数。示例object Demo { def main(args: Array[String]) { println( factorial(0) ) println( fact...原创 2018-09-15 00:41:40 · 767 阅读 · 0 评论 -
Scala 函数 - 匿名函数
Scala提供了一个相对轻量级的语法来定义匿名函数。源代码中的匿名函数称为函数文字,在运行时,函数文字被实例化为称为函数值的对象。Scala支持一级函数,函数可以用函数文字语法表达,即(x:Int)=> x + 1,该函数可以由一个叫作函数值的对象来表示。尝试以下表达式,它为整数创建一个后继函数 -var inc = (x:Int) => x+1变量inc现在是一种...原创 2018-09-15 00:42:31 · 571 阅读 · 0 评论 -
Scala 函数 - 部分应用函数
当在调用一个函数时,把这个函数应用到参数中。 如果您传递所有预期的参数,则表示您已完全应用它。 如果只传递几个参数并不是全部参数,那么将返回部分应用的函数。这样就可以方便地绑定一些参数,其余的参数可稍后填写补上。尝试以下,下面是一个简单的示例程序用来演示如何使用部分应用函数 -import java.util.Dateobject Demo { def main(args: A...原创 2018-09-15 00:43:17 · 643 阅读 · 0 评论 -
Scala 函数 - 柯里化函数
柯里化(Currying)函数是一个带有多个参数,并引入到一个函数链中的函数,每个函数都使用一个参数。 柯里化(Currying)函数用多个参数表定义,如下所示:def strcat(s1: String)(s2: String) = s1 + s2或者,还可以使用以下语法定义柯里化(Currying)函数 -def strcat(s1: String) = (s2: Strin...原创 2018-09-15 00:44:02 · 388 阅读 · 0 评论 -
Scala 闭包
闭包是一个函数,它返回值取决于在此函数之外声明的一个或多个变量的值。以下代码是一个匿名函数。val multiplier = (i:Int) => i * 10这里,函数体i * 10中使用的唯一变量是i,它被定义为该函数的一个参数。尝试以下代码 -val multiplier = (i:Int) => i * factor乘数有两个自由变量:i和facto...原创 2018-09-16 00:48:51 · 444 阅读 · 0 评论 -
Scala 字符串
本章将介绍Scala中的字符串。 在Scala中的字符串和Java中的一样,字符串是一个不可变的对象,也就是一个不能修改的对象。可以修改的对象,如数组,称为可变对象。字符串是非常有用的对象,在本节的最后部分,我们将介绍java.lang.String类的一些重要方法。1.创建一个字符串以下是创建一个字符串的代码 -var greeting = "Hello world!";// ...原创 2018-09-16 00:49:02 · 1219 阅读 · 0 评论 -
Scala 数组
Scala提供了一种数据结构叫作数组,数组是一种存储了相同类型元素的固定大小顺序集合。数组用于存储数据集合,但将数组视为相同类型变量的集合通常更为有用。可以声明一个数组变量,例如:numbers,使用numbers[0],numbers[1]和...,numbers[99]来表示单个变量,而不是分别地声明每个变量,例如number0,number1,...等变量。 本教程介绍如何使用索引变量声...原创 2018-09-16 00:49:23 · 600 阅读 · 0 评论