`

学习scala笔记--2 循环

 
阅读更多

 

 

 

 

apply方法也是函数的入口

 

scala> val f = (x: Int) => x+1

f: Int => Int = $$Lambda$1180/381936788@4b682e71

 

scala> f.apply(3)

res9: Int = 4

 

scala> f(5)

res10: Int = 6

 

----------------------------------

 

 

scala读取输入 可以使用readLine()

 

scala> readLine()

<console>:12: warning: method readLine in trait DeprecatedPredef is deprecated (since 2.11.0): use the method in `scala.io.StdIn`

       readLine()

       ^

res0: String = jhello

 

 

 

----------------------------------

 

提示 readLine() 已经过时 ,可以使用新的  StdIn.readLine()

 

scala> import scala.io.StdIn

import scala.io.StdIn

 

scala>  StdIn.readLine()

res2: String = helow heloo'

 

可以把读入赋给一个变量

scala> val name = StdIn.readLine("plean put your name:")

plean put your name:name: String = catlinan

 

 

----------------------------------

 

 

while 循环:

 

scala> :paste

// Entering paste mode (ctrl-D to finish)

 

var n=10

while(n>0){

 

println(n)

n = n-1

}

 

// Exiting paste mode, now interpreting.

 

10

9

8

7

6

5

4

3

2

1

n: Int = 0

 

scala> 

 

 

 

----------------------------------

 

for循环

 

scala> for(i <- 1 to 10){print(i)}

12345678910

 

----------------------------------

 

for的多重循环  打印99乘法表

scala> :paste

// Entering paste mode (ctrl-D to finish)

 

for(a<- 1 to 9; b<- 1 to 9){

print(a+"*"+b+"="+(a*b)+" ")

if(b==9) println()

}

 

// Exiting paste mode, now interpreting.

 

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 

2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 

3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 

4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 

5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 

6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 

7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 

8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 

9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

 

----------------------------------

 

 

可以for循环一个集合

 

 

val numList = List(1,2,3,4,5,6,7,8,9,10);

 

      // for 循环

      for( a <- numList

           if a != 3; if a < 8 ){

         println( "Value of a: " + a );

      }

 

// Exiting paste mode, now interpreting.

 

Value of a: 1

Value of a: 2

Value of a: 4

Value of a: 5

Value of a: 6

Value of a: 7

numList: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

 

 

 

----------------------------------

 

 

scala> for(c <- "hello world"){print(c+" ")}

h e l l o   w o r l d 

 

scala> :paste

// Entering paste mode (ctrl-D to finish)

 

 

----------------------------------

 

 

 

for 使用 yield

你可以将 for 循环的返回值作为一个变量存储

 

 

scala> :paste

// Entering paste mode (ctrl-D to finish)

 

 

 

val numList = List(1,2,3,4,5,6,7,8,9,10);

 

      // for 循环

      var retVal = for{ a <- numList 

                        if a != 3; if a < 8

                      }yield a

 

      // 输出返回值

      for( a <- retVal){

         println( "Value of a: " + a );

      }

 

 

// Exiting paste mode, now interpreting.

 

Value of a: 1

Value of a: 2

Value of a: 4

Value of a: 5

Value of a: 6

Value of a: 7

numList: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

retVal: List[Int] = List(1, 2, 4, 5, 6, 7)

 

 yield后面是个表达式

 scala> var xx=for( x<- 1 until 10 if x%2==0) yield x*2

xx: scala.collection.immutable.IndexedSeq[Int] = Vector(4, 8, 12, 16)

 

----------------------------------

 

 

until 不包含右边界

 

scala> for(t <- 0 until 10){print(t)}

0123456789

 

 

----------------------------------

 

 

 

使用flag  跳出循环

 

scala> :paste

// Entering paste mode (ctrl-D to finish)

 

var flag=true;

for(x<- 0 to 10 if flag){

print(x)

if(x==5) flag=false

}

 

// Exiting paste mode, now interpreting.

 

012345flag: Boolean = false

 

 

 

----------------------------------

 

使用Breaks类的break方法

 

 

scala>  import scala.util.control.Breaks._

import scala.util.control.Breaks._

 

scala> :paste

// Entering paste mode (ctrl-D to finish)

 

breakable{

 

for(x<- 0 to 10){

print(x)

if(x==5){ break}

}

}

 

 

// Exiting paste mode, now interpreting.

 

012345

 

 

----------------------------------

 

if 守卫

 

scala> for( x <- 0 until 20  if x%2==0){ print(x+" ")}

0 2 4 6 8 10 12 14 16 18 

 

 

----------------------------------

 

for推导式  

 

 

scala> for(x <- 1 to 10  if x%2==0) yield x

res22: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10)

 

scala> var newList = for( x <- 0 until 20  if x%2==0) yield x

newList: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

 

scala> print(newList)

Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

 

----------------------------------

分享到:
评论

相关推荐

    Scala学习笔记(全)

    ### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...

    scala讲解笔记 入门及进阶 PDF文档1-5

    在这里,你会学习到Scala的安装与环境配置,理解Scala的基本语法,包括变量声明、数据类型(如基本类型、引用类型和集合类型)、控制结构(如条件语句和循环)以及函数定义和调用。此外,还会介绍Scala中的模式匹配...

    Scala详细总结(精辟版++)

    Scala提供了各种控制结构,如`if`、`for`、`while`循环等。其中,`for`循环支持多种迭代方式,可以实现复杂的迭代逻辑。 #### 函数 Scala中的函数是非常重要的组成部分,可以接受多个参数,并且支持默认参数值、可...

    scala的操作笔记

    ### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...

    scala学习笔记

    以上内容覆盖了 Scala 编程语言的核心知识点,从基本语法到高级特性,为初学者提供了一个全面的学习指南。Scala 是一门功能强大且灵活的语言,适合于构建大型的、复杂的软件系统。希望这些知识点能够帮助读者更好地...

    Scala初学者入门课程笔记

    Scala 初学者入门课程笔记 Scala 是一种多范式编程语言,支持面向对象编程、函数式编程和逻辑编程。Scala 的设计目标是提供一种expressive 且简洁的语言,使开发者可以快速开发高质量的软件。下面是 Scala 初学者...

    Spark学习笔记

    ### Spark学习笔记知识点详解 #### 一、Scala基础概述 **1.1 什么是Scala** Scala是一种现代化的、多范式的编程语言,旨在融合面向对象编程与函数式编程的优势。它运行于Java平台上,能够充分利用Java虚拟机(JVM)...

    快学Scala 第2版.zip

    这本书的中文完整版包含高清扫描和书签功能,使得读者可以轻松查找和学习相关内容,而且文字可选择复制,方便笔记和后续查阅。 Scala在大数据领域扮演着重要角色,主要归功于它与Apache Spark的紧密集成。Spark是一...

    课堂笔记(韩顺平)

    综上所述,这些笔记内容涵盖了从后端开发到前端交互,再到服务器管理和HTTP通信的多个重要概念,是IT学习和工作中非常实用的基础知识。理解和掌握这些知识点将有助于提升开发效率和问题解决能力。

    Scala笔记Markdown版本(至集合章节)

    总结,本Scala笔记Markdown版本涵盖了从语言基础到集合操作的重要内容,适合初学者入门和有经验的开发者巩固知识。通过学习,开发者将能够掌握Scala的核心特性和编程技巧,从而更好地利用Scala进行后端开发。

    笔记实验六,spark,大数据分析

    根据提供的实验报告,我们可以提取出以下相关知识点: ### 一、Spark Streaming简介 - **Spark Streaming** 是 Apache...通过以上知识点的学习和实验操作,可以有效提升学生对于大数据实时分析技术的理解和应用能力。

    Spark笔记,发出来希望可以帮到各位

    本笔记主要关注Spark的基础知识,同时也涉及了Scala语言的学习,因为Spark主要是用Scala编写的。 首先,Scala是一种静态类型的多范式编程语言,它结合了面向对象和函数式编程的特点。在第一章中,我们学习了Scala的...

    基于Netty网络编程项目实战笔记.7z

    《基于Netty网络编程项目...通过阅读这份笔记,开发者不仅可以深入理解Netty的内部工作原理,还能学习到如何在项目中有效运用Netty,提升网络编程的效率和质量。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

    Spark学习笔记一

    这得益于其高级的DAG(有向无环图)执行引擎,支持非循环数据流和内存计算。Spark 通过内存分布数据集优化了迭代过程,避免了频繁的磁盘I/O,极大地提升了性能。同时,Spark 也支持将数据缓存到内存中,对于需要多次...

    Algorithm-learning.zip

    在这个压缩包中,可能包含了关于卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)以及生成对抗网络(GAN)等前沿技术的实战笔记,帮助学习者理解其工作原理并掌握实际应用技巧。 其次,机器学习...

    javashuffle源码-cfg-note:Linux系统常用配置笔记,非项目,包含网络、基本工具、环境变量、Jdk、Scala、Tomca

    身为码农,表示十分痛恨服务器上的各种乱七八糟配置,平时很少用到Linux命令,对Linux一直保持在学了就忘,忘了再学的死循环中,故做此笔记,可能以后翻看的机会也不多,毕竟总有用到的时候 PS:本文仅针对CentOS,...

    deeplearning4j-examples:Deeplearning4j示例(DL4J,DL4J Spark,DataVec)

    Deeplearning4j(DL4J)是Java和Scala中的一款开源深度学习库,它使得在Java生态系统中构建和部署神经网络成为可能。这个压缩包文件"deeplearning4j-examples"包含了DL4J的示例代码,帮助开发者更好地理解和使用这个...

    AI_Academy_Java

    2. **神经网络(Neural Networks)**:Deeplearning4j是一个用于Java和Scala的深度学习库,它支持卷积神经网络(CNN)、循环神经网络(RNN)和多层感知器(MLP),广泛应用于图像识别和自然语言处理。 3. **自然...

    java代码-大数据一班

    1. **Java编程基础**:首先,我们需要理解Java的基础语法,包括变量、数据类型、控制结构(如if语句、for循环、while循环)、类与对象、封装、继承和多态等概念。这些是编写任何Java程序的基础,也是学习大数据处理...

    nescala-2015

    nescala 2015 笔记 网站: 会谈 0800:门打开 登记入住并喝杯咖啡 0850:开场白 让我们记住我们为什么在这里感谢那些让这一切发生的人 0900:Akka HTTP——什么、为什么和如何 马蒂亚斯·多尼茨 (@sirthias) 0950...

Global site tag (gtag.js) - Google Analytics