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#

目录
相关文章
|
4月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
|
8月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
572 1
Java 中数组Array和列表List的转换
|
8月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
Web App开发 存储 前端开发
别再用双层遍历循环来做新旧数组对比,寻找新增元素了!使用array.includes和Set来提升代码可读性
这类问题的重点在于能不能突破基础思路,突破基础思路是从程序员入门变成中级甚至高级的第一步,如果所有需求都通过最基础的业务逻辑来做,是得不到成长的。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
Python
Python元组tuple“删除”元素的两种函数代码设计
实际上,Python的tuple元组内的元素是不能被修改的,因此也是无法被删除的,但是,为了移除Python元组tuple内的某些元素,以获得一个新的元组,还是有其办法存在的。比如,我们可以使用for循环添加的方法,来创建一个不包含那些需要被移除的元素的新元组。Python中元组添加元素的内置方法为__add__()方法,实际上,该方法也是
187 4
|
存储 索引 Python
元组(Tuple)在Python编程中的应用与实例
元组(Tuple)在Python编程中的应用与实例
651 2
|
存储 缓存 Python
Python中的列表(List)和元组(Tuple)是两种重要的数据结构
【7月更文挑战第12天】Python中的列表(List)和元组(Tuple)是两种重要的数据结构
342 1