Scala
Simple_Zz
这个作者很懒,什么都没留下…
展开
-
Scala stream view
Stream是一个集合这个集合,可以用于存放,无穷多个元素,但是这无穷个元素并不会一次性生产出来,而是需要用到多大的区间,就会动态的生产,末尾元素遵循lazy规则(即:要使用结果才进行计算的) 。1) 使用#::得到一个stream def numsForm(n: BigInt) : Stream[BigInt] = n #:: numsForm(n + 1) 2)...原创 2018-12-30 18:43:32 · 319 阅读 · 0 评论 -
Scala while循环语句
当给定条件为真时,while循环重复一个语句或一组语句。它在执行循环体之前测试条件状态。 只要给定的条件为真,while循环语句重复执行目标语句。语法以下是while循环的语法 -while(condition){ statement(s);}在这里,语句(statement(s))可能是一个单一语句或一个语句块。条件(condition)可以是任何表达式,true是任...原创 2018-10-03 11:37:41 · 2074 阅读 · 0 评论 -
Scala 迭代器
迭代器不是集合,而是一种逐个访问集合元素的方法。 下一个迭代器的两个基本操作是hasNext。 对it.next()方法的调用将返回迭代器的下一个元素,并提高迭代器的状态。可以使用Iterator的it.hasNext方法判断是否还有更多元素返回。迭代器返回的所有元素最直接的方法是使用while循环。让我们参考以下示例程序 -示例object Demo { def main(a...原创 2018-09-16 00:50:20 · 815 阅读 · 0 评论 -
Scala 选项
Scala Option[T]是由给定类型的零或一个元素的一种容器。Option[T]可以是 Some [T]或None对象,它代表缺少的值。 例如,如果已找到与给定键对应的值,则Scala的Map的get方法会生成Some(value),如果在Map中未定义给定的键,则将返回None。Option类型在Scala程序中经常使用,可以将其与Java中可用的null值进行比较,表示null值。 ...原创 2018-09-16 00:50:12 · 171 阅读 · 0 评论 -
Scala 元组
Scala元组将固定数量的项目组合在一起,以便它们可以作为一个整体传递。 与数组或列表不同,元组可以容纳不同类型的对象,但它们也是不可变的。以下是一个存有整数,字符串和控制台(console)的元组的示例。val t = (1, "hello", Console)上面是以下语法的简写 -val t = new Tuple3(1, "hello", Console)元组的...原创 2018-09-16 00:50:06 · 275 阅读 · 0 评论 -
Scala 映射 Map
Scala映射(Map)是一组键/值对的对象。 任何值都可以根据键来进行检索。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。可变对象和不可变对象之间的区别在于,当对象不可变时,对象本身无法更改。默认情况下,Scala使用不可变映射(Map)。如果要使用可变集合(Set),则必须明确导入scala.collection.mutable.Map类。如果想同...原创 2018-09-16 00:49:59 · 555 阅读 · 0 评论 -
Scala 集合 Set
Scala Set是相同类型成对的不同元素的集合。换句话说,一个集合是不包含重复元素的集合。 集合有两种:不可变(immutable)和可变(mutable)。可变对象和不可变对象之间的区别在于,当对象不可变时,对象本身无法更改。默认情况下,Scala使用不可变的集合(Set)。 如果要使用可变集合(Set),则必须明确导入scala.collection.mutable.Set类。 如果要在...原创 2018-09-16 00:49:46 · 697 阅读 · 0 评论 -
Scala 链表 列表 List
Scala列表与数组非常相似,列表的所有元素都具有相同的类型,但有两个重要的区别。 首先,列表是不可变的,列表的元素不能通过赋值来更改。 其次,列表表示一个链表,而数组是平的。具有类型T的元素的列表的类型被写为List[T]。尝试以下示例,这里列出了为各种数据类型定义的列表。// List of Stringsval fruit: List[String] = List("appl...原创 2018-09-16 00:49:38 · 1651 阅读 · 0 评论 -
Scala 集合
Scala拥有丰富的集合库。集合是一种用来存储各种对象和数据的容器。 这些容器可以被排序,诸如列表,元组,选项,映射等的线性集合。集合可以具有任意数量的元素或被限制为零或一个元素(例如,Option)。集合可以是严格的(strict)或懒惰的(Lazy)。 懒惰集合的元素在访问之前可能不会使用内存,例如Ranges。 此外,集合可能是可变的(引用的内容可以改变)或不可变的(引用引用的东西从不改...原创 2018-09-16 00:49:29 · 140 阅读 · 0 评论 -
Scala 数组
Scala提供了一种数据结构叫作数组,数组是一种存储了相同类型元素的固定大小顺序集合。数组用于存储数据集合,但将数组视为相同类型变量的集合通常更为有用。可以声明一个数组变量,例如:numbers,使用numbers[0],numbers[1]和...,numbers[99]来表示单个变量,而不是分别地声明每个变量,例如number0,number1,...等变量。 本教程介绍如何使用索引变量声...原创 2018-09-16 00:49:23 · 571 阅读 · 0 评论 -
Scala 字符串
本章将介绍Scala中的字符串。 在Scala中的字符串和Java中的一样,字符串是一个不可变的对象,也就是一个不能修改的对象。可以修改的对象,如数组,称为可变对象。字符串是非常有用的对象,在本节的最后部分,我们将介绍java.lang.String类的一些重要方法。1.创建一个字符串以下是创建一个字符串的代码 -var greeting = "Hello world!";// ...原创 2018-09-16 00:49:02 · 1193 阅读 · 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 · 430 阅读 · 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 · 375 阅读 · 0 评论 -
Scala 函数 - 部分应用函数
当在调用一个函数时,把这个函数应用到参数中。 如果您传递所有预期的参数,则表示您已完全应用它。 如果只传递几个参数并不是全部参数,那么将返回部分应用的函数。这样就可以方便地绑定一些参数,其余的参数可稍后填写补上。尝试以下,下面是一个简单的示例程序用来演示如何使用部分应用函数 -import java.util.Dateobject Demo { def main(args: A...原创 2018-09-15 00:43:17 · 631 阅读 · 0 评论 -
Scala 函数 - 匿名函数
Scala提供了一个相对轻量级的语法来定义匿名函数。源代码中的匿名函数称为函数文字,在运行时,函数文字被实例化为称为函数值的对象。Scala支持一级函数,函数可以用函数文字语法表达,即(x:Int)=> x + 1,该函数可以由一个叫作函数值的对象来表示。尝试以下表达式,它为整数创建一个后继函数 -var inc = (x:Int) => x+1变量inc现在是一种...原创 2018-09-15 00:42:31 · 546 阅读 · 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 · 522 阅读 · 0 评论 -
Scala for循环语句
for循环是一种重复控制结构,可以让您有效地编写一个需要执行特定次数的循环。在Scala中有各种形式的for循环,如下所述 -使用范围的for循环Scala中带范围for循环的最简单的语法是 -for( var x <- Range ){ statement(s);}在这里,Range可以是数字范围,并且表示为i到j。 左箭头←运算符被称为生成器,因为它从一个范围...原创 2018-10-03 11:40:55 · 1273 阅读 · 0 评论 -
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 · 522 阅读 · 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 · 339 阅读 · 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 · 573 阅读 · 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 · 892 阅读 · 0 评论 -
Scala Set 集
集是不重复元素的结合。集不保留顺序,默认是以哈希集实现Java 中 Setjava中,HashSet 是实现 Set<E> 接口的一个实体类,数据是以哈希表的形式存放的,里面的不能重复数据。Set 接口是一种一个不包含重复元素的 collection, HashSet 中的数据也是没有顺序的。import java.util.HashSet;public class ...原创 2018-11-19 17:03:33 · 179 阅读 · 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 · 1161 阅读 · 0 评论 -
Scala 队列
队列是一个有序列表,在底层可以用数组或是链表来实现 其输入和输出要遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。 在Scala中,由设计者直接给我们提供队列类型使用。 在Scala中,有 scala.collection.mutable.Queue 和 scala.collection.immutable.Queue ,一般来说我们在开发中通常使用可变集合中的队列 ...原创 2018-11-19 15:32:12 · 1858 阅读 · 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 · 1476 阅读 · 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 · 807 阅读 · 0 评论 -
函数式编程与面向对象编程的比较
函数式编程作为结构化编程的一种,正在受到越来越多的重视。工程中不在只是面向对象编程,更多的人尝试着开始使用函数式编程来解决软件工程中遇到的问题。 什么是函数式编程?在维基百科中给出了详细的定义,函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。...原创 2018-11-13 09:25:08 · 1654 阅读 · 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 · 1170 阅读 · 0 评论 -
【面向对象】 低耦合高内聚
耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息内聚性也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。低耦合粗浅的理解是:一...原创 2012-01-10 15:23:59 · 5497 阅读 · 0 评论 -
【面向对象】 三大特性、五大原则
三大特性:封装、继承、多态五大基本原则:SRP、OCP、LSP、DIP、ISP什么是面向对象面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产...原创 2018-09-04 12:16:16 · 5803 阅读 · 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 · 753 阅读 · 0 评论 -
Scala 函数 - 嵌套函数
Scala允许您定义函数内部的函数,而在其他函数中定义的函数称为局部函数。这是一个阶乘计算器的实现,我们使用传统的技术来调用第二个嵌套方法来完成工作。尝试以下程序来了解如何实现嵌套函数。示例object Demo { def main(args: Array[String]) { println( factorial(0) ) println( fact...原创 2018-09-15 00:41:40 · 751 阅读 · 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 · 215 阅读 · 0 评论 -
Scala this 关键字
在scala中,this是一个关键字,用于引用当前对象。可以使用this关键字调用实例变量,方法,构造函数。Scala this示例在以下示例中,这用于调用实例变量和主要构造方法。class ThisExample{ var id:Int = 0 var name: String = "" def this(id:Int, name:Strin...原创 2018-09-18 14:45:44 · 6208 阅读 · 1 评论 -
Scala 方法重载
Scala提供了方法重载功能,使我们能够定义相同名称但使用不同参数或数据类型的方法。 它有助于优化代码。 Scala方法通过使用不同的参数重载示例在下面的例子中,定义了两个具有不同数量的参数但具有相同数据类型的add方法。class Arithmetic{ def add(a:Int, b:Int){ var sum = a+b ...原创 2018-09-18 14:44:57 · 3110 阅读 · 0 评论 -
Scala 构造函数
Scala默认主构造函数在scala中,如果不指定主构造函数,编译器将创建一个主构造函数的构造函数。 所有类的主体的声明都被视为构造函数的一部分。它也被称为默认构造函数。Scala默认主构造函数示例class Student{ println("Hello from default constructor"); } Scala主要构造函数Scal...原创 2018-09-18 14:44:15 · 754 阅读 · 0 评论 -
Scala 单例和伴生对象
单例(Singleton)对象是一个通过使用object关键字而不是使用class关键字声明的对象。其它对象不需要调用在单例对象中声明的方法。在scala中,没有静态的概念。 所以scala创建一个单例对象来为程序的执行提供入口点。如果不创建单例对象,代码也会成功编译,但不会产生任何输出。单例对象中声明的方法可以全局访问。单例对象可以扩展类和性状。 Scala单例对象示例obj...原创 2018-09-18 14:42:27 · 313 阅读 · 0 评论 -
Scala 类和对象
本章将介绍如何在Scala编程中使用类和对象。类是对象的蓝图(或叫模板)。定义一个类后,可以使用关键字new来创建一个类的对象。 通过对象可以使用定义的类的所有功能。下面的图通过一个包含成员变量(name 和 rollNo)和成员方法(setName()和setRollNo())的Student类的例子来演示类和对象。最后都是类的成员。类是一个模板的东西,而对象是真实存在的。 在下图中,Stu...原创 2018-09-18 14:41:34 · 1328 阅读 · 0 评论 -
Scala throw throws 关键字
Scala提供了throw关键字来抛出异常。 throw关键字主要用于抛出自定义异常。同时也提供了throws关键字来声明异常。可以使用方法定义声明异常。 它向调用者函数提供了此方法可能引发此异常的信息。 它有助于调用函数处理并将该代码包含在try-catch块中,以避免程序异常终止。在scala中,可以使用throws关键字或throws注释来声明异常。 Scala Throw示例...原创 2018-09-17 03:45:27 · 3423 阅读 · 0 评论 -
Scala finally块
finally块用于在异常时释放资源。资源可能是文件,网络连接,数据库连接等,finally块执行代码运行保证。以下程序说明了finally块的用法。Scala finally块示例class ExceptionExample{ def divide(a:Int, b:Int) = { try{ a/b ...原创 2018-09-17 03:42:10 · 691 阅读 · 0 评论