12.scala编程思想笔记——类和对象
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50444135
源码下载连接请见第一篇笔记。
对象时包括SCALA在内的众多现代编译语言的基础。
Scala不仅仅是面向对象语言还是函数式语言。这是其迥异于其他编程语言。
对象包含存储数据用的val和var,并且使用方法来执行操作。
类定义了域和方法。
本质上类就是用户定义的新数据类型。
构建某个类的val或var称为创建对象或创建实例。
类可以有许多操作方法。
创建一个Range类型的名为r的对象,如下
scala>val r=Range(0,10)
r: scala.collection.immutable.Range =Range(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
然后输入r,然后按下TAB会进行补齐,和我们使用linux 非常的相似的。出现一堆命令。
scala> r.
++ contains fold isDefinedAt minBy reverse startsWith toSet
++: containsSlice foldLeft isEmpty mkString reverseIterator step toStream
+: copyToArray foldRight isInclusive nonEmpty reverseMap stringPrefix toString
/: copyToBuffer forall isInstanceOf numRangeElements runWith sum toTraversable
:+ corresponds foreach isTraversableAgain orElse sameElements tail toVector
:\ count genericBuilder iterator padTo scan tails transpose
addString diff groupBy last par scanLeft take union
aggregate distinct grouped lastElement partition scanRight takeRight unzip
andThen drop hasDefiniteSize lastIndexOf patch segmentLength takeWhile unzip3
apply dropRight head lastIndexOfSlice permutations seq terminalElement updated
applyOrElse dropWhile headOption lastIndexWhere prefixLength size to view
asInstanceOf end inclusive lastOption product slice toArray withFilter
by endsWith indexOf length reduce sliding toBuffer zip
canEqual exists indexOfSlice lengthCompare reduceLeft sortBy toIndexedSeq zipAll
collect filter indexWhere lift reduceLeftOption sortWith toIterable zipWithIndex
collectFirst filterNot indices map reduceOption sorted toIterator
combinations find init max reduceRight span toList
companion flatMap inits maxBy reduceRightOption splitAt toMap
compose flatten intersect min repr start toSeq
我们需要记住的是,虽然tab补齐了很多命令,但是千万不要以为是穷举了所有可用操作,可能还有其他特性。
对象上定义的特性就是能够在对象上执行的操作,有时称之为发送消息或调用方法。
为了在一个对象上执行某个操作,需要给出该对象的标识符,后面跟着圆点,之后是操作的名字。
例如:
scala> r.reverse
res2: scala.collection.immutable.Range =Range(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
调用r的reverse将对象顺序进行反转。