zoukankan      html  css  js  c++  java
  • Scala:Next Steps in Scala

    Array

     1 val greetStrings = new Array[String](3)
     2 greetStrings(0) = "Hello"
     3 greetStrings(1) = ","
     4 greetStrings(2) = "world!
    "
     5 
     6 for(i <- 0 to 2)
     7   print(greetStrings(i))
     8 
     9 val numNames = Array("zero", "one", "two")
    10 for(x <- numNames)
    11   println(x)

    针对上面的代码可以说如下几点:

    泛型支持

    1 new SomeClass[Type Argument](...)

    当方法只有一个参数时,可以采用中缀的形式调用。

    1 0 to 2 // (0).to(2)

    一切皆为对象,所有的运算符都对应对象上的方法。

    obj(...) 对应 obj.apply(...)

    obj(...) = ... 对应 obj.update(...)

     1 object TestClass {
     2   def apply(): TestClass = new TestClass()
     3 }
     4 class TestClass {
     5   def say(msg: String):Unit = {
     6     println(msg)
     7   }
     8 
     9   def apply(x: Int): Unit = {
    10     println(x)
    11   }
    12 
    13   def apply(x: Int, y: Int): Unit = {
    14     println(x)
    15     println(y)
    16   }
    17 
    18   def apply(args: Int*): Unit = {
    19     for(x <- args)
    20       println(x) 
    21   }
    22 
    23   def update(x: Int, msg: String): Unit = {
    24     println(x)
    25     println(msg)
    26   }
    27 
    28   def update(x: Int, y: Int, msg: String): Unit = {
    29     println(x)
    30     println(y)
    31     println(msg)
    32   }
    33 }
    34 
    35 var test = new TestClass()
    36 test say "hello, world!"
    37 test(1)
    38 test(2, 3)
    39 test(2, 3, 4)
    40 
    41 test(1) = "hello"
    42 test(2, 3) = "world"
    43 
    44 println(TestClass())

    List

     1 var list = List(3, 4, 5)
     2 list = 1 :: 2 :: list
     3 list.foreach(println)
     4 
     5 class TestClass {
     6   def |: (x: Int): TestClass = {
     7     println(x)
     8     this
     9   }
    10 }
    11 
    12 var test = new TestClass()
    13 2 |: 1 |: test

    List的用法还是比较自然的,从上面的代码可以学到一点额外的知识,即:以“:”号结尾的方法,在采用中缀调用法时,对象在右侧。

    Tuple

    1 val pair = (99, "Luftballons")
    2 println(pair._1)
    3 println(pair._2)

    Tuple在语法层面上显出了其特殊性,估计Scala在很多地方对其都有特殊处理,拭目以待了。

    Set adn Map

    1 // Set
    2 var set = Set(1, 2, 3)
    3 set += 4
    4 println(set.contains(2))
    5 
    6 // Map
    7 var map = Map(1 -> "One", 2 -> "Two")
    8 println(map)

    1 -> "One" 只是方法调用,即:(1).->("One"),返回的是一个Tuple。

  • 相关阅读:
    C#中的取整函数
    java代码(8) ---guava字符串工具
    java代码(7) ---guava之Bimap
    java代码(6) ---guava之multimap
    java代码(5) ---guava之Multiset
    java代码(4)---guava之Immutable(不可变)集合
    java代码(2)---Java8 Stream
    java代码(3)----guava复写Object常用方法
    java代码(1)---Java8 Lambda
    看完这篇HTTP,跟面试官扯皮就没问题了(转)
  • 原文地址:https://www.cnblogs.com/happyframework/p/4199616.html
Copyright © 2011-2022 走看看