相见恨晚的 scala

简洁到不行,多一个分号都是不应该。

学习笔记:

不同于 java 的for循环:

/**
  * Created by ACER on 2017/7/22.
  */
object Test {
  def main(args: Array[String]) {
    //普通for循环
    var a = 0
    for (a <- 1 to 10){
      print(a + ", ")
    }
    println()
    //不包含10
    for(a <- 1 until 10){
      print(a + ", ")
    }
    println()
    //不包含9,步长为2
    for(a<- 1 until(9, 2)){
      print(a + ", ")
    }
    println()
    //取笛卡尔积的for
    var b = 0
    var c = 0
    for(a <- 1 to 10;b <- 1 to 9){
      c = c + 1
      println("a: " + a)
      println("b: " + b)
    }
    //c输出为90
    println("c:" + c)

    //遍历集合
    var mlist = List(10,2,13)
    for (a <- mlist){
      print(a + ", ")
    }
    println()
    //多条件过滤
    for(a<-mlist if a!=2;if a>10){
      print(a + ", ")
    }
    println()
    //使用yield关键字存储for循环的每次的结果
    var d = 0;
    val numList = List(1,2,3,4,5,6,7,8,9,10);

    // for 循环,注意这里使用的是大括号
    var retVal = for{ d <- numList
                      if d != 3; if d < 8
    }yield d

    // 输出返回值
    var e = 0
    for( e <- retVal){
      println( "Value of d: " + e );
    }

  }
}
时间: 2024-10-06 06:57:04

相见恨晚的 scala的相关文章

Scala Study --- override

以前没使用过Scala, 其实我Java也是半截水平\无奈, 学Java的时候刚从C++中挣脱出来,发现Java无比优雅,但很快又对Java种种不信任程序员的设计感到受限. 直到, , 今天遇到了Scala\撒花 Scala的collection设计不能更赞!一段时间后打算专门写篇文章总结Scala,名字就叫"我为什么喜欢Scala!". 废话就不多说了,今天研究了一下Scala的override用法与特点. override --- one of the key words of S

Scala 中apply方法的用法

Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来增强灵活性.关于协议在Python中是挺多的,看看Python的对象协议,有很多很多,如果对Python的对象协议了解(不了解的可以点击此处)的比较深刻的话,其实scala的apply方法也是很好理解的,比如说 Scala 为配合 DSL 在方法调用时有这么一条约定: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 "0 to 2",实际完整调用是 "0.

【Scala】Scala之Numbers

一.前言 前面已经学习了Scala中的String,接着学习Scala的Numbers. 二.Numbers 在Scala中,所有的数字类型,如Byte,Char,Double,Float,Int,Long,Short都是对象,这七种数字类型继承AnyVal特质,这七种数字类型与其在Java中有相同的范围,而Unit和Boolean则被认为是非数字值类型,Boolean有false和true两个值,你可以获取到各个数字类型的最值. 复杂的数字和日期 如果需要更强大的数类,可以使用spire,sc

scala控制结构

#判断 scala> def min(x:Int,y:Int):Int={ var a=x if(x>y) a=y return a } scala> min(1,2)res1: Int = 1 #循环    ##引申:函数式编程里面尽量使用常量,所以尽量避免 while do? 变量? while (A) B do B while A scala> var m=3scala> while (m!=0){ println(m) m-=1 } 321 #枚举 for (i<

scala学习手记19 - Option类型

看到Option类型就知道这本教材应该要说那个了. 使用过guava后,应该知道guava中的Optional类的作用是什么.算了找下原始文档好了: Optional<T> is a way of replacing a nullable T reference with a non-null value. An Optional may either contain a non-null T reference (in which case we say the reference is &

scala学习手记13 - 类继承

在scala里,类继承有两点限制: 重写方法需要使用override关键字: 只有主构造函数才能往父类构造函数中传参数. 在java1.5中引入了override注解,但不强制使用.不过在scala中要想重写方法必须使用override关键字.如果确实重写了父类的方法又不使用override关键字的话,则会在编译时报错,提示没有使用override修饰符. scala的副构造函数必须调用主构造函数或是另一个副构造函数.只有在主构造函数中才能向父类的构造函数中传递数据.可以看出来主构造函数如同父类

scala学习手记10 - 访问修饰符

scala的访问修饰符有如下几个特性: 如果不指定访问修饰符,scala默认为public: 较之Java,scala对protected的定义更加严格: scala可以对可见性进行细粒度的控制. scala的默认访问修饰符 如果没有修饰符,scala会默认把类.字段.方法的访问修饰符当做public.如果要将之调整为private或protected,只需在前面添加对应的修饰符关键字即可.就如下面的程序: class Microwave{ def start() = println("star

Scala应用函数

我们使用“_” 来代替单个的参数,实际上你也可以使用“_”来代替整个参数列表,比如说,你可以使用 print _ 来代替 println (_). someNumbers.foreach(println _) Scala编译器自动将上面代码解释成: someNumbers.foreach( x => println (x)) 因此这里的“_” 代表了Println的整个参数列表,而不仅仅替代单个参数. 当你采用这种方法使用“_”,你就创建了一个部分应用的函数(partially applied

Scala函数字面量

Scala中函数为头等公民,你不仅可以定义一个函数然后调用它,而且你可以写一个未命名的函数字面量,然后可以把它当成一个值传递到其它函数或是赋值给其它变量.下面的例子为一个简单的函数字面量(参考整数字面量,3 为一整数字面量). (x :Int ) => x +1 这是个函数字面量,它的功能为+1. 符好 => 表示这个函数将符号左边的东西(本例为一个整数),转换成符号右边的东西(加1). 函数字面量为一个对象(就像3是个对象),因此如果你愿意的话,可以把这个函数字面量保持在一个变量中.这个变量