按月份:6 月 2015

  • Scala学习(七)——Apply和Unapply

    简介 apply和unapply指的是持有这两个名字的方法,对于这两个方法,Scala编译器做了一些特殊的设定,赋予了它们特殊的意义,让它们看起来更好看一点。 从数组讲起 在前面的内容里,我们已经定义过数组了,但是还从来没有介绍过如何使用数组,在这里补齐一下:

    刚接触Scala的人一定很疑惑为什么使用()而不是常用的[]作为数组访问 […]

  • Scala学习(六)——运算符

    简介 在任何语言里,运算符都是很重要的部分,Scala也不例外。然而,从某种意义上讲,Scala根本就没有除了直接赋值运算符=以外的运算符。这是怎么回事儿呢?接下来就开始讲。 本质 在Scala中,除了=以外,运算符其实都是方法。中缀运算符是一个参数的方法,前缀运算符和后缀运算符是无参方法。在其他语言中我们熟悉的表达式到了Scala中可能实质上只是一系列方法调用。比如: [crayon-6766c […]

  • Scala学习(五)——泛型

    简介 在Java或者C++里面,像列表(List)这些数据结构,在编写的时候,都不需要指定其中元素的类型,而是构造的时候指定,这一特性就称为泛型。同样,Scala中也提供了泛型,而且功能比Java的泛型更加强大。 类的泛型 可以给一个类添加泛型,这样,在编写的时候就不需要考虑这一类型的具体情况,而是使用一个标记来注明。泛型的定义列表用[]包含,用,分隔,卸载类名之后,构造函数参数列表之前,泛型的具 […]

  • Scala学习(四)——类型

    简介 作为一个强类型语言,类型是语言中很重要的一部分。和Java相比,Scala的类型更加丰富。 基本类型 Scala没有基本类型,所有对应Java中的基本类型都是类: Java基本类型 Java类 Scala类型 说明 byte Byte Byte -128~127 short Short Short -32,768~32,767 int Int Int -2,147,483,648~2,147 […]

  • Scala学习(三)——代码块和流程控制

    简介 如果说类和方法构成了程序的框架,那么实际完成的代码就是程序的血肉。Scala中也提供了常见的流程控制结构诸如if,for,while,do … while等等,但是其特性和Java相比有所不同。在本文中将会一一介绍。 基本代码块 和Java相同,基本代码块是由{}包围的语句序列。和Java不同的地方在于,Scala的基本代码块是有值的,其值为最后一个语句的值(Scala中的语句都是有值的 […]

  • Scala学习(二)——成员,方法和构造方法

    简介 上一章中其实也可以看到,Scala和Java类似,在类内直接定义的变量、方法即是成员变量和方法。但Scala中的构造方法和Java稍微有些不同。 成员 首先可以像Java那样直接定义成员:

    也可以设置访问级别,默认是公有,没有public关键字(可以当变量名使用):

  • Scala学习(一)——类、对象和变量

    简介 Scala是一种基于JVM的语言,但是兼顾了Java的面向对象特性和函数式编程。因为不像Java那样那么需要兼顾向后兼容性,Scala的活力比Java要高出许多,语言特性也丰富许多。更好的泛型、更方便的回调、更简单的集合操作。 因为函数式编程和以前的面向对象编程以及面向过程编程的思路都很有差异,一步登天是不可能的,所以我决定以Java为基石,从Scala的语法特性学起,以求从语法特性中获得语 […]

  • 双调排序

    双调排序是一种并行排序算法,如果以串行的方式运行,其复杂度为$$O(n\log^2n)$$,相对地,如果有$$n$$个可同时运行的线程,则复杂度为$$O(\log^2n)$$。 首先介绍双调序列。所谓单调序列,就是指一个递减或者递增序列,而双调,就是将两个长度相同,单调性相反的序列连接起来的序列,如果画成图形就是以下两种序列: 对于这样一个序列,可以设计一个输入和输出个数为$$2^k$$的排序网络 […]