原文地址:
A Taste of 2.8: Named and Default Arguments
翻 译:
Eastsun
Scala2.8引入了新的特性——命名参数——这意味着我们可以通过使用参数名来指定参数。命名参数可以避免在参数类型相同的情况下混淆各个参数的含义,增强了代码的可读性。
def resize(width: Int, height: Int) = { ... }
resize(width = 120, height = 42)
并且,Scala2.8支持在方法中使用默认参数。在当前的版本的Scala中(
Eastsun注:指2.8之前的版本),只能通过方法重载来实现参数默认值。这在一定程度上导致代码冗余,而默认参数可以避免这一点。
def f(elems: List[Int], x: Int = 0, cond: Boolean = true)
f(List(1))
f(Nil, cond = false)
上面的示例同时示范了命名参数允许选择性使用默认参数:在f方法的第二个调用中,f使用了参数x的默认值,而没有使用cond的默认值。
编译器生成copy方法
命名参数和默认参数一个非常有用的运用是
编译器自动为case类生成copy方法。这个方法采取一种轻量级的语法来创建一个原始实例的修改拷贝。copy方法具有和被拷贝的case类的基本构造方法同样类型和参数,并且每个参数都使用基本构造方法中相应值作为默认值。
case class A[T](a: T, b: Int) {
// def copy[T'](a: T' = this.a, b: Int = this.b): A[T'] = new A[T'](a, b)
}
val a1: A[Int] = A(1, 2)
val a2: A[String] = a1.copy(a = "someString")
Scala2.8还未正式发布,但是其nightly build中已经实现了上述功能。想提前体验下么,点击
此处下载。需要了解更多关于命名参数与默认参数的内容,请阅读
相应的SID。
分享到:
相关推荐
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...
scala 2.8 api 文档 chm格式
资源名称:Scala程序设计:Java虚拟机多核编程实战资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
赠送jar包:scala-compiler-2.11.12.jar; 赠送原API文档:scala-compiler-2.11.12-javadoc.jar; 赠送源代码:scala-compiler-2.11.12-sources.jar; 赠送Maven依赖信息文件:scala-compiler-2.11.12.pom; 包含...
这是 .dot文件的一个小集合,其中包含与Scala 2.8 Collection API最相关类型的图表说明。 您可以在上看到最终结果。 这些图表也可以在上。 任何反馈当然都是非常欢迎的。 如何建造 在计算机上安装graphviz。 在OS /...
第1章简介11.3 函数式编程71.4 本书的内容91.5 本书面向的读者111.6 致谢11第 2 章 起步132.4 命令行上的Scala 162.5 把S
1. if表达式 2.语句终结符、块表达式 3.输入和输出 4.循环 5.高级for循环
quarkus-scala-gradle:显示Quarkus与Scala和Gradle一起工作的简单项目
emacs-scala-mode 该模式旨在为Scala语言提供基本的emacs支持,包括: 代码,注释和多行字符串的本地缩进 运动命令 突出显示 另请参阅 。 安装 根据我们的指南,首选机制是通过MELPA和use-package : ( use-...
Nespresso 的 Scala 演示 本演示文稿适用于对 Scala 有一定了解的 Java 开发人员。 我们假设您已经熟悉以下 Scala 概念: 特征 隐式(参数和转换) 伴生对象 案例类 高阶函数 注意:对于那些需要加快速度的人,我...
基础语法:1.Scala与Java的关系; 2.安装Scala; 3.scala解释器的使用 ; 4.声明变量; 5.数据类型与操作符;
Scala面试问题:可用于与潜在候选人面试的有用的Scala相关问题列表
scala-vault:Hashicorp Vault Scala库