.类型参数化数组

val arrayString = Array[String](2);

arrayString (0)=”Hello”;

arrayString (1)=”World”;

for (i <- 0 to 1){

print(arrayString (i))

}

需要留意上面代码的几个地方如下:

1、无论是在创建数组时的维度指定,还是对数组元素的访问都是使用括号,这里本质上是调用了Array类对应的方法返回的结果完成的操作;

2、scala基本原则:方法若只有一个参数,调用的时候可以省略点和括号, 如:(0).to (1),但必须明确方法调用者;

3、用括号传递给变量一个或多个参数时,scala会将它转换成对apply方法的调用,如:arrayString(i)转换为arrayString.apply(0);

     更简单理解:申请创建对象时将括号转换为apply方法的调用;

4、对带有括号并包括一个或多个参数的变量赋值时,将使用对象的update方法对括号里的参数和等号右边的的对象执行调用,如:arrayString (0)=”Hello” 转换为 arrayString.update(0,”Hello”);

     更简单理解:数组创建完成后对更新数组元素的值时采用update;

 

.list

1、list与Array的区别:Array数组实例化后数组的长度不能在变,但数组的元素可变。list一旦创建无论是长度还是元素都不可变;

2、list中有两个方法需要注意分别为 :: 与  ::: , :: (右操作数方法)将新元素组合到现有列表的前端返回新列表,  ::: 方法实现多个列表元素的叠加返回新列表;

3、空表的简写为 Nil ;

 

.元组(Tuple)

元组的特点为能包含多种数据类型,例如:

val t = (1234,”Hello World!”)

访问元组的两个元素分别为:t._1与t._2

 

.Set集合

创建set对象与list、array类似,通过伴生对象的apply方法实现,Set分为可变的与不可变的分别存在下图不同的包中:

scala.collection.immutable.HashSet包中的Set不可变,scala.collection.mutale包中的Set为可变;

 

.Map集合

在对应的map集合中也分为可变与不可变两种,其中scala.collection.immutable为不可变,scala.collection.mutable为可变,继承关系如下图:

 

 

.文件操作

引用的包名:scala.io.Source

调用代码:Source.fromfile(文件路径).getLines.toList

Source.fromfile(文件路劲)打开指定的文件并返回Source对象,调用getLines后返回 Iterator[String]枚举器,最后掉用 toList将迭代器转换为List;

注:Iterator[String]枚举器迭代完成后将会失效,所以需要转换为List;

 

.Singleton

scala中不能定义静态成员,取而代之的为单例对象,单例对象的定义与类的定义唯一的区别就为,类用class修饰而单例对象用object修饰,当单例对象与某个类的名称相同时,该单例对象称为此类的伴生对象,类和它的伴生对象必须定义在同一个源文件中,类和它的伴生对象可以互相访问各自的私有成员;

 

.Scala程序

独立运行scala程序,必须创建 有main方法(返回值为Unit,参数为Array[String])的单例对象;

编译方式:scalac   文件名.scala  ;// 该方法编译会有点慢

快速编译方式:fsc 文件名.scala

运行程序:scala  单例对象名(包含main方法)  参数1  参数2 ……; //参数之间用空格隔开

另一种设置scala程序入口的方式 Application特质:

object MyTest extends Application{
    println("Hello World!");
}

与带main方法的单例对象相比缺陷在于无法访问命令行参数;

 

.字符字面量
单引号之间的任何Unicode字符;

八进制必须在’\0’与’\377’之间,字符八进制的表示前缀必须为反斜杠;

scala> val a = ‘\101’

a: Char = A

十六进制以前缀’\u’加四位十六进制数字表示;

scala val a = ‘\u0041’

a: Char = A

常用的转意字符如下图:

 

.字符串字面量

在字符串字面量中需要注意的是scala为原始字符串引入的一种特殊的语法,它以同一行的三个以引号做为开始和结束,内部的原始字符串可以包含无论何种任意字符(三个引号除外),若前导存在空格,去掉空格可结合管道  | 与 stripMargin函数(管道符号放每行前,然后对整个字符串调用stripMargin)。

 

该篇最后说下scala中的val与var,var表示变量的定义,而val表示常量的定义(类似Java中的final),而且是没有副作用的,在scala编写程序时,尽量使用val因为它能更好的支持等效推论以及重构;

 

Scala学习笔记(一)数据类型的更多相关文章

  1. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  2. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  3. Scala学习笔记之:tuple、array、Map

    [TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...

  4. 机器学习(三)--- scala学习笔记

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...

  5. Scala学习笔记(三):基础知识

    有了可运行的环境,就需要写一些简单的语句来认识一下Scala,本文没有写那么详细,只是为了方便查看.唤起回忆 (1)变量的定义方法 Scala有两种变量 var val 注意:在解释器中,可以用一个之 ...

  6. scala学习笔记(1)

    scala ------------------------- java语言脚本化 1.安装scala-2.12.1.msi 2.进入到scala的命令行 3.Tab键会有补全的功能 1.scala程 ...

  7. Scala学习笔记之二--基本数据类型

    前言 本篇主要讲Scala的基本数据类型,更多教程请参考:Scala教程 基本数据类型 Scala一共提供了9中数据类型,Scala的基本数据类型与java中的基本数据类型是一一对应的,这是Scala ...

  8. 【大数据】Scala学习笔记

    第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...

  9. es6学习笔记--新数据类型Symbol

    学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...

随机推荐

  1. PythonCrawl自学日志(4)

    2016年9月22日10:34:02一.Selector1.如何构建(1)text构建: body = '<html><body><span>good</sp ...

  2. This transaction has been rolled back, rather than only the current.

    今天上午,收到运维组同事反映某应用系统的其中一个功能报错,不是偶然性事件,每个使用该功能的用户都报错.报错内容为:This transaction has been rolled back, rath ...

  3. UIWebView 加载网页、文件、 html-b

    UIWebView  是用来加载加载网页数据的一个框.UIWebView可以用来加载pdf word doc 等等文件 生成webview 有两种方法,1.通过storyboard 拖拽 2.通过al ...

  4. MongoDB 覆盖索引查询

    MongoDB 覆盖索引查询 官方的MongoDB的文档中说明,覆盖查询是以下的查询: 所有的查询字段是索引的一部分 所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分, Mo ...

  5. 问题分享:ActiveX component can't create object: "MSComDlg.CommonDialog"

    问题描述: 修改一个前辈的代码,在我自己电脑上面运行的很好,但是放到要用户电脑(win7 x64)上面却跑不了,报个如题的错误. 查了下是COMDLG32.OCX的问题,用到控件的地方是: Dim o ...

  6. ASP.NET Application_Error错误日志写入

    一个web项目开发已完成,测试也通过,但是,bug是测不完的,特别是在一个大的网络环境下.那么,我们就应该记录这些错误,然后改正.这里,我的出错管理页面是在global.asax里面的,利用里面的Ap ...

  7. 徐汉彬:Web系统大规模并发——电商秒杀与抢购

    [导读]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设. 电商的秒杀和抢购,对我们来说,都不是一个陌生的东西. ...

  8. TCP 协议如何保证可靠传输

    一.综述 1.确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传. 2.数据校验 3.数据合理分片和排序: UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层 ...

  9. C++类中静态变量和静态方法使用介绍!

    原链接:http://www.ecoviews.cn/net/archives/216.html 静态成员的提出是为了解决数据共享的问题.实现共享有许多方法,如:设置全局性的变量或对象是一种方法.但是 ...

  10. Linux 启动参数介绍

    Linux 启动参数介绍 取自2.6.18 kernel Documentation/i386/boot.txt 文件中介绍 vga= 这里的不是一个整数(在C语言表示法中,应是十进制,八进制或者十六 ...