Scala学习之循环和数组的运用
2018-01-30 17:10
330 查看
package com.lyzx.scalaLearn import scala.collection.mutable.ArrayBuffer class Day0302 { //在高级for循环中可以定义任意多个变量 def f1(): Unit ={ for(i <- 1 to 3;from =4-i ;j <- 1 to from) println("i="+i+",j="+j) val s = "abcd" val s2 = (for(c <- s) yield (c+1).toChar).toString println("s2:"+s2) } //如果for循环中以yield开头则会返回一个Vector集合这个叫for的推导式 def f2(): Unit ={ val arr = Array("A","B","C") val vv = for(v <- arr) yield v.toLowerCase for(v <- vv) println("-"+v) } //带有默认值的方法 def f3(middle:String,left:String="[",right:String="]"): String ={ left+middle+right } def sum(args:Int*):Int ={ println(">>>"+args.getClass.getName) var sum:Int = 0 for(v <- args) sum += v sum } /** * 没有返回值/或者说返回值类型是Unit的函数叫过程 * 我们使用过程的目的是为了它的副作用 */ def f4 (): Unit ={ //可以使用lazy来申明一个变量 lazy val x = scala.io.Source.fromFile("scalaQ") } //scala的异常处理机制 def f5(): Unit ={ try{ val x = 1/0 }catch { case ex:ArithmeticException =>ex.printStackTrace() case _ :IndexOutOfBoundsException=>println("数组下标") } } //ArrayBuffer是长度可变的数组类似于java中的ArrayList def f6(): Unit ={ val ab = new ArrayBuffer[Int]() //在后面添加一个元素 ab += 1 //在后面添加多个元素 ab += (2,4,6,8) //把一个数组中的元素(引用)添加到其后面,可以使用++=追加任何集合 //其实在缓冲数组后面添加或者移除元素是一个高效的操作 ab ++= Array(99,88) ab ++= List(100) //剪切后面的3个元素 ab trimEnd(3) //在索引为2的位置插入999这个元素,当然后面元素都要平移 ab.insert(2,999) //可以插入多个元素 ab.insert(2,111,222,333) //删除索引为2的元素 ab.remove(2) //从索引为2的位置开始,向后删除2位 ab.remove(2,2) for(v <- ab){ println(v) } } //对于数组和缓冲数组的遍历(其方法时一样的) def f7(): Unit ={ val ab = new ArrayBuffer[Int]() ab ++= Array(10,9,8,7,6,5) //通过下标访问每一个索引 for(i <- 1 until ab.length){ println(ab(i)) } //类似于增强的for循环 for(v <- ab){ println(">>"+v) } } //对 to的是使用 def f8(): Unit ={ for(i <- 1 to (10,2)){ println(i) } for(v <- (1 to 10).reverse){ print(v+"-") } } //对(缓冲)数组做转换 //通过对yield 对数组做转换 数组转换后还是数组 缓冲数组准换后得到的是缓冲数组 def f9(): Unit ={ val arr = Array(1,2,3,4,5,6,7,8,9,10) //可以通过守护过滤部分数据 val vv = for(v <- arr if(v % 3 == 0)) yield v+1 for(v <- vv){ print(v+" ") } println() for(v <- arr if(v % 2 == 0)){ print(v+" = ") } } //上述功能的另一种做法,只是会新产生一个数组,原数组没有影响 def f10(): Unit = { val arr = Array(1,2,3,4,5,6,7,8,9,10) val a2 = arr.filter(_ % 3 == 0) .map(_ +1) for(v <- a2){ println(v) } } } object Day0302{ def main (args:Array[String]): Unit = { val t = new Day0302 // t.f1() // t.f2() // println(t.f3("123","<")) // val sum = t.sum(1,2,3,4,5,6,7,8,9,10) // println("sum="+sum) // // //可以通过在元组后面追加:_* // println(t.sum(1 to 5:_*)) // t.f5 // t.f6 // t.f7() // t.f8() // t.f9() t.f10() } }
相关文章推荐
- 【学习ios之路:C语言】数组.循环.语句总和运用试题练习
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
- Scala学习笔记(六)----数组,循环,排序
- 大数据学习之Scala中数组(Array)与循环控制for联合使用学习(4)
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
- Scala学习笔记一之基础语法,条件控制,循环控制,函数,数组,集合
- Scala基础学习之tuple(元组),Array(数组),Map(映射)
- scala学习(4)——循环
- Scala学习七:数组
- Scala 变量-函数-循环-数组-List-元组-Set-Map 讲解
- Scala学习笔记02【数组、列表、元组、集合和映射】
- Scala学习笔记--数组
- [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组
- scala学习笔记之数组
- Scala学习笔记03_数组
- Scala学习---数组
- scala学习(2)-基本语法--for循环和if语句
- scala学习笔记2 数组
- Scala学习之for 循环和 yield 的例子
- scala学习第三章数组相关操作