七周七语言:Scala Day 2

这天的内容给人印象最深的就是foldLeft这玩意儿,用起来就知道;读写文件感觉和Java很相似:-D

  • 关于如何使用Scala文件的讨论

    Scala可以使用所有的Java的对象,所以,java.io.File就可以被用来在Scala中读写文件。
    例如将“Hello,Scala”写进文件:

    import java.io.*
    
    object Test {
        def main(args: Array[String]) {
            val writer = new PrintWriter(new File("test.txt"))
            writer.write("Hello Scala")
            writer.close()
        }
    }
                

    读取文件内容:

    import sacla.io.Source
    
    object Test {
        def main(args: Array[String]) {
            println("Following is the content read:")
            Source.fromFile("test.txt").forEach{
                print
            }
        }
    }
    		    

    AN:在找Scala资料的时候发现了一个不错的网站(http://www.tutorialspoint.com/index.htm)

  • 闭包(closure)与代码块的不同

    代码块是一些语法上的--一些逻辑性语句组成的单元:

    if (Condition) {
        // one Block
    } else {
        // another Block
    }
    		  

    闭包是引用了自由变量的函数,这个自由变量将与其函数一同存在,即使离开了原有的环境也是一样的。如:

    def foo() {
        var x = 0
        return () => { x += 1; return x}
    }
    val counter = foo()
    println(counter)  //输出2,x虽然离开了原有函数foo,但实际上仍随着foo的结果被调用而存在。
    println(counter)  //输出3
    		  
  • 使用foldLeft方法计算一个列表中所有字符串的总长度

    val test = List(
        "One",
        "Two",
        "Three",
        "Four"
    )
    
    println(test.foldLeft(0)((sum, value) => sum + value.length))
    		
  • 编写一个Censor trait,包含一个可将Pucky和Beans替换为Shoot和Darn的方法。使用映射存储脏话和它们的特点

    trait Censor {
        val test = Map(
            "Pucky" -> "Shoot",
            "Beans" -> "Darn"
        )
        def transform(words:String) = {
    
            test.foldLeft(words)(
                (rightWords, formerWords) =>
                rightWords.replaceAll(
                    ("(?i)\\b" + formerWords._1 + "\\b"),
                    formerWords._2			    
                )
            )		
        }
    }
    
    class Speak(val words:String) extends Censor
    
    val tom = new Speak("Pucky is Beans")
    
    println(tom.transform(tom.words))
    		

    其中,Censor里的transform函数参考了一下这里

    ,当然主要是因为replaceAll这个方法。以上所给网址的实现也是很不错的,但总感觉太繁琐了,不简约。
  • 从一个文件中加载脏话或它们的替代品

    这个问题,是不是太简单了?就加载脏话?或,替代品?

    for(line <- io.Source.fromFile("test.txt").getLines)
    println(line)

转载于:https://www.cnblogs.com/iceCream/archive/2013/01/21/2870350.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值