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[Str...
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 + "\t,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\n")
    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#

目录
相关文章
|
27天前
|
Python
Numpy学习笔记(一):array()、range()、arange()用法
这篇文章是关于NumPy库中array()、range()和arange()函数的用法和区别的介绍。
40 6
Numpy学习笔记(一):array()、range()、arange()用法
|
20天前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
21天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
1月前
|
存储 JavaScript 前端开发
JavaScript Array(数组) 对象
JavaScript Array(数组) 对象
24 3
|
2月前
|
JavaScript 前端开发
JavaScript Array map() 方法
JavaScript Array map() 方法
|
1月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
|
2月前
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
31 5
|
3月前
|
Python
PyCharm View as Array 查看数组
PyCharm View as Array 查看数组
79 1
|
4月前
|
索引
|
4月前
|
JavaScript API 索引
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
63 0