Scala快学笔记(一)
一,基本概念:
1,Scala是一种基于JVM的面向对象和函数式编程语言
2,基本类型:数值类型 -》:Byte,Short,Int,Long,Float,Double和布尔类型:Boolean和字符类型:Char


question:用BigInt计算2的2017次方(BigInt(2).pow(1024)),scalaApI使用
3,高级for :
for(i <- "abc";j <- 1 to 3 if j==2) yield (i+j).tochar
/*result cde note:第一个for结束记得用分号;,yield最后获得的结果和第一个生成器类型一致,如“cde” 和“abc”*/
4,参数变长的函数声明:def Demo(args:Int*):Object={} 如果没有返回值的函数程为过程,形式如 def Demo(s:String){} 此时没有等号,也可以显示用Unit=来声明
4.1,默认参数 def Demo(name:String="a",age:Int="4")={} 可以用val b= new Demo() 默认可以无须设置参数 name默认val
4.2 ,函数,过程:过程没有返回值的函数,无需要=号,方法,相当于非静态方法,即对象方法??(不太确定),函数相当于Java中的静态方法(类方法),要加=号。
5,懒值和方法和val区别:
1,懒值 初始化被推迟,只有第一次调用时才会得到验证
2,val 申明时就得到验证
3,def 每次调用时,都需要进行一次验证
例子:
val file=scala.io.Source.fromFile("/usr/one.txt")
/*result \usr\one.txt (系统找不到指定的路径。)*/
lazy file1 =scala.io.Source.fromFile("/usr/one.txt")
/*result
file: scala.io.BufferedSource = <lazy>
*/
def file2 =scala.io.Source.fromFile("/usr/one.txt")
/*result
//file:scala.io.BufferedSource
file1
file2
//java.io.FileNotFoundException: \usr\one.txt (系统找不到指定的路径。)
6,异常:try{}catch{}finally{}
7,块以最后一个返回,空块返回Unit
8,注意点x=y=4这样不合法的,特例:x:Unit,y:Int,x=y=5
9,var t:Long=1 "String".foreach(t*=_.toLong)
10,练习 递归求字符串的Unicode乘积之和
def product(s:String):Long={
if(s.length==1) s.charAt(0).toLong
else s.take(1).charAt(0).toLong*product(s.drop(1))
}
//第10题
def mi(x:Double,n:Int):Double={
if (n==0) 1
else if(n<0)
1/mi(x,-n)
else if(n>0 && n%2==0)
mi(x,n/2)*mi(x,n/2)
else
mi(x,n-1)*x
}
10,sorted(true):升序,sorted(false):为降序(从上往下)
11,多维数组:val arr=Array.ofDim[Double](3,4)
12,课后习题:
//交换数组相邻的元素 3.2
def changeArr(arr:Array[Int]):Array[Int]={
for (i <- 0 until arr.length if( i%2==0)) {
val temp= arr(i)
arr(i)=arr(i+1)
arr(i+1)=temp
}
arr
}
/*异常,会出现数组越界,修改为 for (i <-0 until (arr.length-1,2)*/
val tmp=java.util.TimeZone.getAvailableIDs()
val tmp2=for (i <- tmp if(i.startsWith("America"))) yield { i.drop("America".length)}
scala.util.Sorting.quickSort(tmp2)
/*字符串的操作*、
参考文献:
Scala快学笔记(一)的更多相关文章
- Scala快学笔记(二)
一,基本概念 1,映射 Map与HashMap与TreeMap,SotredMap等区别: 1.HashMap键无序,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度 ...
- Scala快学笔记(三)
一 ,文件操作: 1,读取行:val source=Source.fromFile("fileName","utf-8) 形成一个字符串:source.mkString ...
- [Scala] 快学Scala A3L3
Actor 通过尽可能避免锁和共享状态,actor使得我们能够容易地设计出正确.没有死锁或争用状况的程序. Scala类库提供了一个actor模型的简单实现.AKKA是更高级的actor类库. 19. ...
- [Scala] 快学Scala A2L2
集合 13.1 集合的三大类 所有的集合都扩展Iterable特质.集合的三大集合为Seq, Set, Map Seq是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过整型下表快 ...
- [Scala] 快学Scala A1L1
基础 1.1 声明值和变量 在Scala中,鼓励使用val; 不需要给出值或变量的类型,这个信息可以从初始化表达式推断出来.在必要的时候,可以指定类型. 在Scala中,仅当同一行代码中存在多条语句时 ...
- 快学Scala习题解答—第一章 基础
1 简介 近期对Scala比较感兴趣,买了本<快学Scala>,感觉不错.比<Programming Scala:Tackle Multi-Core Complexity on th ...
- 《快学Scala》
Robert Peng's Blog - https://mr-dai.github.io/ <快学Scala>Intro与第1章 - https://mr-dai.github.io/S ...
- 快学Scala 第十九课 (trait的abstract override使用)
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super ...
- 快学Java NIO 续篇
可以先看Java NIO的整体介绍,这篇接着说以下内容,<快学Java NIO>续篇 FileChannel SocketChannel ServerSocketChannel Java ...
随机推荐
- C# 获取存在DataTable1不存在DataTable2的数据的快速方法
通过合并和获得改变两个方法获得差异的部分: dataTable1.AcceptChanges();dataTable1.Merge(dataTable2);DataTable changesTable ...
- 消除Git diff中^M的差异
消除Git diff中^M的差异 在Windows上把一个刚commit的文件夹上传到了Ubuntu.在Ubuntu上使用git status查看,发现很多文件都被红色标注,表示刚刚修改未add.在W ...
- docker从零开始网络(六)Macvlan
使用Macvlan网络 某些应用程序,尤其是遗留应用程序或监视网络流量的应用程序,希望直接连接到物理网络.在这种情况下,您可以使用macvlan网络驱动程序为每个容器的虚拟网络接口分配MAC地址,使其 ...
- OpenAcc社区版安装教程(Linux版)(更新版)
官方安装过程如下图所示 1.安装前 下载OpenAcc社区版 1,目前为止的最新版,平台是Linux,选择Linux x86-64. 我的服务器系统是CentOs 下载地址链接:https://www ...
- HDU 1159.Common Subsequence-最长公共子序列(LCS)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- luoguP2296 寻找道路
因为是出边与终点直接或间接相连,所以将边反向,从终边开始,将所有终边能到达的点都打上标记因为是最短路,所以不需要处理重边和自环,于是再跑最短路就好题目关键:路径上的所有点的出边所指向的点都直接或间接与 ...
- 最小生成树(Kruskal)(并查集)
最小生成树 时间限制: 1 Sec 内存限制: 64 MB提交: 11 解决: 2[提交][状态][讨论版] 题目描述 某个宇宙帝国有N个星球,由于宇宙的空间是三维的,因此每个星球的位置可以用三维 ...
- centos7 启用iptables
在centos 7下启用iptables systemctl stop firewalld.service systemctl disable firewalld.service yum instal ...
- [BZOJ 4060] Word Equations
Link: BZOJ 4060 传送门 Solution: 可以发现字符串间的关系可以构成一棵树 于是我们先用字符串哈希建树,再树形$dp$即可 设$dp[i][j]$为第$i$个节点从$P$字符串的 ...
- 【dfs序】【set】bzoj3991 [Sdoi2015]寻宝游戏
在考试代码的基础上稍微改改就a了……当时为什么不稍微多想想…… 插入/删除一个新节点时就把其dfn插入set/从set中删除. 当前的答案就是dfn上相邻的两两节点的距离和,再加上首尾节点的距离. 比 ...