`
kevinming
  • 浏览: 4019 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

scala 传名参数

阅读更多
第一了解完传名参数,就想起了写log的代码,为了避免不合理的写日志带来的开销,经常需要使用LOG.isDebugEnabled()判断后才写日志
//传名参数方法
  def debug1(log: => String) {
    if (logLevel <= DEBUG) println(log)
  }
//普通的Sting参数方法
  def debug2(log: String) {
    if (logLevel <= DEBUG) println(log)
  }
 


反编译看看
  public void debug1(Function0<String> log) {
    if (logLevel() <= DEBUG()) Predef..MODULE$.println(log.apply()); 
  }

  public void debug2(String log)
  {
    if (logLevel() <= DEBUG()) Predef..MODULE$.println(log);
  }


以后log方法,就不用在每次都判断日志级别了,缺点就是生成额外的.class文件,如果非常斤斤计较性能,似乎还是isDebugEnabled性能好些
分享到:
评论
1 楼 coollzh 2011-09-30  
def debug1(log: => String) { 
    if (logLevel <= DEBUG) println(log) 
  } 

你这个能编译通过吗?

应该是

def debug1(log:() => String) { 
    if (logLevel <= DEBUG) println(log()) 
  } 

相关推荐

    Scala类型参数.md

    Scala类型参数.md

    scala sdk scala-2.12.3

    9. **函数式编程**:函数在Scala中是一等公民,可以作为参数传递,也可以作为返回值。同时,Scala还提供了函数式编程的关键概念,如高阶函数、闭包和柯里化。 10. **Actor模型**:Akka库是Scala中的并发和分布式...

    scala3 scala3 scala3 scala3 scala3

    在语法方面,Scala3移除了许多被认为是冗余或者易出错的部分,比如`null`关键字、`_`作为函数参数、以及某些形式的`var`使用。这些改变旨在减少潜在的错误源,提升代码质量。 模块化是另一个关键改进。Scala3通过`...

    scala实战高清讲解

    - 柯里化:Scala支持柯里化,即将接受多个参数的函数转化为一系列接受一个参数的函数,增强了函数的灵活性。 - 纯函数:纯函数没有副作用,只依赖于输入参数,不改变外部状态,有助于写出可预测且易于测试的代码。...

    scala2.12.1Windows镜像包

    - **函数式编程**:函数是一等公民,可以作为参数传递,也可以作为返回值。并支持高阶函数、柯里化、闭包等概念。 - **模式匹配**:强大的模式匹配机制,用于解构复杂数据结构。 - ** Actors模型**:Scala内置对...

    scala + mybatis 数据库查询

    - XML映射文件通常包含SQL查询、参数映射和结果集映射,它们定义了MyBatis如何执行查询并将结果转换为Scala对象。 4. **Scala中的SQL查询** - 使用Scala版MyBatis,我们可以通过调用Mapper接口的方法执行SQL查询...

    Scala语法简明教程

    - 方法定义在Scala中更为简洁,支持默认参数、可变参数、命名参数等多种形式。 ```scala def f(x: Int): Int = x * x def a(x: Int, y: Int): Int = x + y def d(): Unit = println("None") ``` #### 资源...

    Scala考试题1

    - 柯里化是将接受多个参数的函数转换为一系列只接受一个参数的函数的过程。 13. **模式匹配与 Java switch-case 的不同**: - Scala 的模式匹配更强大,支持值匹配、类型匹配、提取器对象等,而 Java 的 switch-...

    最好的scala学习 课件

    最后,"Scala进阶之路-part05-高级语法.pdf"将探讨Scala的一些高级特性,如类型推断、高阶函数、匿名函数、 currying、偏函数、类型系统(如类型别名、类型参数和类型成员)以及元编程。这部分内容将提升你的编程...

    scala学习源代码

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala学习源代码"的压缩包文件很可能包含了用于教学或自我学习Scala编程的基础示例。让我们深入了解一下Scala语言的关键概念和特性。 ...

    scala-2.12.10.zip

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala-2.12.10.zip"文件是Scala编程语言的特定版本——2.12.10,专为Windows操作系统设计的安装包。Scala 2.12.x系列是该语言的一个...

    scala-2.12.10.tgz

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。Scala运行在Java虚拟机(JVM)上,并且可以充分利用Java的生态系统。`scala-2.12.10.tgz`是一个针对Linux操作系统的Scala安装包,它的版本号...

    scala-2.11.7 包

    这里的`-z`参数表示使用gzip压缩,`-x`参数表示解压,`-v`参数用于显示详细过程,`-f`后面跟着压缩文件的名称。 解压完成后,你需要将Scala的bin目录添加到系统的PATH环境变量中。这使得你可以在任何目录下运行...

    Scala编程详解 第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页.pptx

    函数入门之默认参数和带名参数 共5页第7讲-Scala编程详解:函数入门之变长参数 共4页第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页第9讲-Scala编程详解:数组操作之Array、ArrayBuffer以及遍历数组 共7...

    Scala-2.11.1.zip

    函数在Scala中被视为一等公民,可以作为参数传递,也可以作为返回值。 4. **集合库**:Scala的集合库是其的一大亮点,它包含了丰富的数据结构,如List、Set、Map,以及高效的Seq、Buffer和ArrayBuffer。这些集合...

    Scala详细总结(精辟版++)

    Scala中的函数是非常重要的组成部分,可以接受多个参数,并且支持默认参数值、可变参数列表等特性。函数也是Scala中的第一类公民,可以赋值给变量、作为参数传递,甚至作为其他函数的返回值。 #### 类(class)和对象...

    scala-2.11.8.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala-2.11.8.rar"压缩包包含了Scala语言的2.11.8版本的源代码,这对于理解Scala的工作原理、学习高级编程技巧以及进行自定义扩展或...

    windows版scala-2.11.12.zip

    在这个"windows版scala-2.11.12.zip"压缩包中,包含的是Scala 2.11.12版本的Windows兼容安装文件,这是Scala的一个稳定版本,适用于开发人员在Windows操作系统上进行Scala编程。 Scala 2.11.x系列是Scala的一个主要...

    学习scala好的项目

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和Web开发等领域。Spark是基于Scala构建的大数据处理框架,其高性能和易用性使得Scala在大数据领域备受...

Global site tag (gtag.js) - Google Analytics