码迷,mamicode.com
首页 > 其他好文 > 详细

Scala学习笔记——简化代码和柯里化

时间:2017-04-16 11:55:41      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:manage   div   for   print   strong   lis   input   first   ide   

1.简化代码

package com.scala.first

import java.io.File
import javax.management.Query

/**
  * Created by common on 17-4-5.
  */
object FileMatcher {

  def main(args: Array[String]) {

    for (file <- filesHere)
      println(file)

    println()


    for (file <- filesMatching("src", _.endsWith(_)))
      println(file)

    for (file <- filesEnding("src"))
      println(file)

  }

  private def filesHere = (new File(".")).listFiles

  //matcher是传入一个函数,返回boolean值,比如_.endsWith(_)
  private def filesMatching(query: String, matcher: (String, String) => Boolean) = {
    for (file <- filesHere; if matcher(file.getName, query)) yield file
  }

  //上面的函数不够简洁,下面是更加简洁的定义
  private def filesMatch(matcher: String => Boolean) = {
    for (file <- filesHere; if matcher(file.getName)) yield file
  }

  //然后可以定义使用不同matcher()的方法
  def filesEnding(query: String) = {
    filesMatch(_.endsWith(query))
  }

  //使用exists来简化代码
  def containsOdd(nums: List[Int]): Boolean = {
    nums.exists(_ % 2 == 1)
  }

  def containsNeg(nums: List[Int]): Boolean = {
    nums.exists(_ < 0)
  }

}

 输出是

./.idea
./build.sbt
./target
./input
./project
./src

./src
./src

 

Scala学习笔记——简化代码和柯里化

标签:manage   div   for   print   strong   lis   input   first   ide   

原文地址:http://www.cnblogs.com/tonglin0325/p/6718320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!