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#

scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例的更多相关文章

  1. Scala学习笔记之:tuple、array、Map

    [TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...

  2. Scala学习笔记(四)—— 数组

    定长数组Array 定义定长数组用Array,有如下几种方法: 初始化一个长度为8的定长数组,其所有元素默认值均为0 scala> new Array[Int](8) res0: Array[I ...

  3. python学习笔记整理——元组tuple

    Python 文档学习笔记2 数据结构--元组和序列 元组 元组在输出时总是有括号的 元组输入时可能没有括号 元组是不可变的 通过分拆(参阅本节后面的内容)或索引访问(如果是namedtuples,甚 ...

  4. Go语言学习笔记(三)数组 & 切片 & map

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 数组 Arrays 数组是同一种数据类型的固定长度的序列. 数组是值类型,因此改变副本的值,不会改变本身的值: 当 ...

  5. Scala学习笔记(二):运行脚本文件

    在某个目录(如:F:\)下新建一个文本文件,命名为:hello.scala 其内容为: println("Hello World!") 那么这个时候该怎么运行这个脚本文件呢? 通过 ...

  6. Python学习笔记3-Python元组、数组、字典集合的操作

    在Python中数组中的每一项可以是不同的数据类型 元组:只能读不能写的数组 aTuple=(1,'abc','tmc',79.0,False) print aTuple[1:3] print typ ...

  7. scala 学习笔记十 元组

    1.元组初始化 2.元组作为函数返回值 3.元组拆包 上面168行 ,单个val后面跟着一个由五个标识符构成的元组,表示对ff返回的元组进行拆包 上面174行,将整个元组捕获到单个val或var中,那 ...

  8. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  9. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

随机推荐

  1. 软工_Alpha阶段事后分析总计

    1.设想和目标 1.1 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要解决狼人杀玩家在游戏时的一些痛点.因为之前自己对于游戏中那些不方便的地方有过体 ...

  2. android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论

    GUI 是任何系统都很重要的一块. android GUI大体分为4大块. 1)SurfaceFlinger 2)WMS 3)View机制 4)InputMethod 这块内容非常之多,但是理解后,可 ...

  3. Tomcat:基于Apache+Tomcat的集群搭建

    根据Tomcat的官方文档说明可以知道,使用Tomcat配置集群需要与其它Web Server配合使用才可以完成,典型的有Apache和IIS. 这里就使用Apache+Tomcat方式来完成基于To ...

  4. 十五天精通WCF——第七天 Close和Abort到底该怎么用才对得起观众

    一:文起缘由 写这一篇的目的源自于最近看同事在写wcf的时候,用特别感觉繁琐而且云里雾里的嵌套try catch来防止client抛出异常,特别感觉奇怪,就比如下面的代码. public void S ...

  5. One to One 的数据库模型设计与NHibernate配置

    在数据库模型设计中,最基本的实体关系有三种:一对一.一对多.多对多.关于一对多和多对多使用的情况较多,之前也有过一些讨论,现在来说明一下在数据库中一对一的模型设计. 首先,关系数据库中使用外键来表示一 ...

  6. SqlServer链接MySql操作步骤

    Sql Server版本 2008R2 1.从MySQL网站下载最新的MySQL ODBC驱动:http://www.mysql.com/downloads/connector/odbc/,我下载的版 ...

  7. 深入理解Nginx之调试优化技巧

    在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好Nginx本身提供了很 ...

  8. 在Windows下配置Python+Django+Eclipse开发环境

    一.配置开发环境我的开发环境是:Python2.6.7 + Django1.6.2 + Eclipse1.安装Python2.安装Eclipse的Python插件PyDev如上两步如何操作请点击此进行 ...

  9. codeforces118D. Caesar's Legions

    地址:http://www.codeforces.com/problemset/problem/118/D 题目: Gaius Julius Caesar, a famous general, lov ...

  10. poj2486Apple Tree[树形背包!!!]

    Apple Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9989   Accepted: 3324 Descri ...