zoukankan      html  css  js  c++  java
  • scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例

    package yjmyzz
    
    import java.io.PrintWriter
    import java.util.Date
    
    import scala.io.Source
    
    
    object ScalaApp02 {
    
      def main(args: Array[String]) {
        tupleDemo
        println
        mapDemo
        println
        arrayDemo
        println
        fileWriteAndRead
        println(getUrlContent("http://www.cnblogs.com/yjmyzz/"))
    
      }
    
      /**
       * 元组示例
       */
      def tupleDemo = {
        //val表示常量(相当于JAVA中的final),var表示变量
        val tuple = ("jimmy", 100, new Date()) //这写法比c#里的Tuple<T>还简洁
        //打印第1,2,3个元素,注意元组下标是从1开始的
        println(tuple._1)
        println(tuple._2)
        println(tuple._3)
      }
    
      /**
       * 数组示例
       */
      def arrayDemo = {
        var myArr = Array(5, 4, 3, 2, 1) //注意:这里不需要new关键字
        for (i <- myArr) println(i)
        println
        //找出myArr中的偶数
        var even = myArr.filter(i => i % 2 == 0) //这语法的简洁性,快赶上C#的LINQ了
        for (i <- even) println(i)
        println
        scala.util.Sorting.quickSort(even) //排序
        for (i <- even) println(i)
      }
    
      //Map示例
      def mapDemo = {
        var myMap = Map(("jimmy", 1), ("Mike", 2), ("John", 3));
        //遍历
        for ((k, v) <- myMap) {
          println("key:" + k + "	,value=" + v);
        }
        println
        println("all keys => ")
        //遍历key
        for (k <- myMap.keys) {
          println(k)
        }
        println
        //遍历value
        println("all values => ")
        for (v <- myMap.values) {
          println(v)
        }
        println
        //遍历key和value,还有一种写法(利用占位符号"_")
        println("all keys => ")
        for ((k, _) <- myMap) println(k)
        println
        println("all values => ")
        for ((_, v) <- myMap) println(v)
      }
    
    
      /**
       * 文件读写示例
       */
      def fileWriteAndRead = {
        val fileName = "scalaTest.txt"
    
        //写文件
        var writer = new PrintWriter(fileName)
        writer.write("hello scala
    ")
        writer.write("hello spark")
        writer.close()
    
        //读文件
        var fileContent = Source.fromFile(fileName);
        println(fileContent.mkString)
    
      }
    
      /**
       * 获取网页内容
       * @param url
       * @return
       */
      def getUrlContent(url: String): String = {
        Source.fromURL(url).mkString
      }
    
    
    }
    

    从上面的示例代码可以看出,scala有极强的类型推导能力,大多数情况下,不用指定变量类型,编译器能根据变量的值正确推导出变量类型,这一点豪不逊色于c#

  • 相关阅读:
    Animation Curve运动曲线
    Unity3D Collider类的信息传输Ontrigger*与OnCollision*
    springmvc拦截器的简单了解
    JDK中的注解简单了解
    面试加分项---HashMap底层实现原理
    springmvc参数绑定
    springmvc和struts2的区别
    修改tomcat的编码方式,可以解决某些get请求乱码问题
    springmvc 怎么响应json数据
    权限控制框架---shiro入门
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/4696897.html
Copyright © 2011-2022 走看看