`
Ivan_Pig
  • 浏览: 387082 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
反正ItEye都被CSDN收购了,富文本又难用到死,干脆直接迁到CSDN吧~虽然现在只在http://ivaneye.com更新了~
开通了微信公众账号,欢迎大家关注:  PigCode 不定期推送博客文章,及编程相关内容.方便手机阅读. 1. n (最新文章)2. r (随机文章)3. h (热门文章)4. help(帮助信息)5. 其它字符进行关键字搜索.推荐关键字(Java,Clojure,Luminus,Scala,Tomcat,设计模式,Maven,Vim,Emacs)
Lambda表达式(闭包)在很多现代化的编程语言中很常见。在Java平台上引入lambda表达式的一个最主要原因是方便多线程的处理集合。目前,对于list和set等集合类典型的操作方式是使用迭代器。如果需要并行的处理集合,需要编写客户端代码来处理,而不是集合本身处理。 在Java8中,引入闭包的目的就是为了给集合提供函数式的方法,方便处理。这样所带来的好处是,集合能够自己组织他们的元素,而不需要客户端代码来处理。但是,为了使得客户端代码能够使用这一改进,必须给集合添加函数式方法。当前通用的做法是使用匿名类。但是声明匿名类带来了过多的标准化代码。 举例来说,forEach方法接受一个Cons ...
    在一般数学计算中,lambda表达式就是函数:根据部分或所有输入的组合,返回相应的值。lambda表达式作为函数式思想被引入到了Java中。熟悉Java语法的朋友可以把lambda表达式看做是可以接受参数,返回类型,不可修改的,语法简洁的匿名方法。   语法: (parameters) -> expression或者
10 文件和正则表达式 10.1 编写一小段Scala代码,将某个文件中的行倒转顺序(将最后一行作为第一行,依此类推) import io.Source import java.io.PrintWriter val path = "test.txt" val reader = Source.fromFile(path).getLines() val result = reader.toArray.reverse val pw = new PrintWriter(path) result.foreach(line => pw.write( ...
9 继承 9.1 扩展如下的BankAccount类,新类CheckingAccount对每次存款和取款都收取1美元的手续费class BankAccount(initialBalance:Double){     private var balance = initialBalance     def deposit(amount:Double) = { balance += amount; balance}     def withdraw(amount:Double) = {balance -= amount; balance} } 继承语法的使用。代码如下 class CheckingA ...
8 包和引入 8.1 编写示例程序,展示为什么 package com.horstmann.impatient 不同于 package com package horstmann package impatient 分别使用package的效果如下 package com { class T1() {} package horstmann { class T2(t: T1) {} package impatient { class T3(t1: T1, t2: T2) {} } } } 子包里的类可以使用父包里的类。但是第 ...
单例模式在Scala中就是一个默认实现的模式。 对于Java中的单例模式,请看http://www.ivanpig.com/blog/?p=75。 虽然从代码上看,单例模式很简单。但是涉及到多线程问题,问题会很复杂。 Scala中完全不用担心这个问题。 object Single{ def say(){ println("Hello") } def main(args : Array[String]){ Single.say() Single.say() } } 搞定。乍一看 ...
7 对象 7.1 编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法 object Conversions{ def inchesToCentimeters(){} def gallonsToLiters(){} def milesToKilometers(){} } 7.2 前一个练习不是很面向对象。提供一个通用的超类UnitConversion并定义扩展该超类的InchesToCentimeters,GallonsToLiters和MilesToKilome ...
6 类 6.1 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数 加个判断就OK了 class Count{ private var value = Int.MaxValue def increment(){if(value < Int.MaxValue) value + 1 else value } def current = value } 6.2 编写一个BankAccount类,加入deposit和withdraw方法,和一个只读的balance属性 class BankAccount(val balance:Int = 0){ ...
5 映射和元组 5.1 设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另一个映射,采用同一组键,但是价格上打9折 映射的简单操作 scala> val map = Map("book"->10,"gun"->18,"ipad"->1000) map: scala.collection.immutable.Map[java.lang.String,Int] = Map(book -> 10, gun -> 18, ipad -> 1000) scala> fo ...
4 数组相关操作 4.1 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间 random和yield的使用 import scala.math.random def randomArray(n:Int)={ for(i <- 0 until n) yield (random * n).toInt } println(randomArray(10 ...
3 控制结构和函数 3.1 一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果为0,则signum为0.编写一个函数来计算这个值 简单的逻辑判断 def signum(num:Int){if(num>0)print(1)else if(num<0)print(-1)else print(0)} Scala中已经有此方法了,刚才查找API的时候,应该能看到 BigInt(10).signum 3.2 一个空的块表达式{}的值是什么?类型是什么? 在REPL中就能看出来了 scala> val t = {} t: Unit = () ...
1 简介 近期对Scala比较感兴趣,买了本《快学Scala》,感觉不错。比《Programming Scala:Tackle Multi-Core Complexity on the Java Virtual Machine》好很多。 是本不错的入门书。而且每个章节都设置了难度级别,每章有习题,可以巩固Scala语法。 本文的目的就是针对这些习题进行解答 2 基础 2.1 在Scala REPL中键入3,然后按Tab键。有哪些方法可以被应用? 这个。。。。直接操作一遍就有结果了.此题不知是翻译的问题,还是原题的问题,在Scala REPL中需要按3. 然后按Tab才会提示。 直接按3加Ta ...
     Ubuntu10.04下使用apt-get安装ruby on rails ,不本以为挺简单的,还是遇到了一些问题。      使用如下命令安装ruby1.9.1 sudo apt-get install ruby1.9.1-full 问题一: 安装完后输入 ruby -v,理论上会显示ruby的版本,不过显示的却是ruby未安装。 解决办法: /usr/bin/目录下是ruby1.9.1而不是ruby,如果使用ruby1.9.1 -v就显示ruby的版本号了。 或者使用sudo cp /usr/bin/ruby1.9.1 /usr/bin/ruby就可以使用ruby -v命令 ...
Global site tag (gtag.js) - Google Analytics