Scala2.8尝鲜:命名参数与默认参数

  原文地址:[url=http://www.scala-lang.org/node/2075]A Taste of 2.8: Named and Default Arguments[/url]
  翻  译:[url=http://eastsun.iteye.com]Eastsun[/url]

  Scala2.8引入了新的特性——命名参数——这意味着我们可以通过使用参数名来指定参数。命名参数可以避免在参数类型相同的情况下混淆各个参数的含义,增强了代码的可读性。
def resize(width: Int, height: Int) = { ... }
resize(width = 120, height = 42)

  并且,Scala2.8支持在方法中使用默认参数。在当前的版本的Scala中([color=brown]Eastsun注:[/color]指2.8之前的版本),只能通过方法重载来实现参数默认值。这在一定程度上导致代码冗余,而默认参数可以避免这一点。
def f(elems: List[Int], x: Int = 0, cond: Boolean = true)
f(List(1))
f(Nil, cond = false)

  上面的示例同时示范了命名参数允许选择性使用默认参数:在f方法的第二个调用中,f使用了参数x的默认值,而没有使用cond的默认值。

[b][size=large]编译器生成copy方法[/size][/b]
  命名参数和默认参数一个非常有用的运用是[color=orange]编译器自动为case类生成copy方法[/color]。这个方法采取一种轻量级的语法来创建一个原始实例的修改拷贝。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中已经实现了上述功能。想提前体验下么,点击[url=http://www.scala-lang.org/archives/downloads/distrib/files/nightly/scala-2.8.0.r17978-b20090602182830.tgz#]此处[/url]下载。需要了解更多关于命名参数与默认参数的内容,请阅读[url=http://www.scala-lang.org/sid/1#]相应的SID[/url]。
Unity Animancer插件(一)基本使用 Animancer是什么?资源商店主页我们来通过Animancer实现一个最基本的动画播放效果。首先创建一个脚本,编写如下代码 很容易理解,就是在时播放一个指定的动画片段。接下来为角色添加、和刚刚编写的,并为字段赋值 接下来运行游戏就可以看到效果了 此时角色身上的组件可以看到当前动画的各项参数 下面我们来实现通过按键控制角色在于之间转换。新创建一个脚本。在代码中监听Y轴上的输入。然后根据监听到的数值判断角色状态,并播放相应的动画 给对应字段赋值后,启动游戏看下效果 下面来实现一个开枪效果。在默认状态下,角色 阅读详情

相关推荐

2025ICPC南昌邀请赛题解

2025ICPC南昌邀请赛由XDU和WHU联合出题的ICPC南昌邀请赛,榜单显示8题金、6题银、5题铜。

weixin_50089904的博客 1960

Scala学习笔记四:默认参数和带名参数

1.默认参数 在scala中,有时调用某些函数时,不想给出参数的具体值,而想使用参数自身默认的值,此时在定义函数时就可使用默认参数的功能 def sayHello(firstName:String, middleName:String="William", lastName:String="Croft") = firstName + " " + middleName + " " + lastName 如果给出的参数不够,则会从左往右依次应用参数 2.Java和Scala实现默认参数区别 Jav

一壶清茶的专栏 505

瑞芯微rv1126 rtsp+mpp+rga取流

瑞芯微rv1109 rtsp+mpp+rga取流

ZuoSeDiao的博客 6340

Scala 函数 多个参数

object HelloWorld { def main(args: Array[String]): Unit = { println("Hello Scala") } } 基本格式: def 方法名(参数名:参数类型): 返回值类型 = {     // 括号内的叫做方法体    // 方法体内的最后一行为返回值,不需要使用return } object FuncAp...

weixin_38858330的博客 2036

EDA工具安装第一步:Synopsys Installer的配置与图形化界面使用详解

本文详细解析了EDA工具安装的关键第一步——Synopsys Installer的配置与使用。文章阐述了其作为统一部署管理器和依赖协调者的核心作用,并分步详解了如何通过图形化界面高效安装EDA工具,同时介绍了命令行批处理等进阶技巧,旨在帮助工程师快速搭建稳定的芯片设计环境。

zeta9的博客 342

测试用例经典练习之微信发红包测试用例

微信发红包测试用例

ZCYaiCLX3344的博客 1万+

Scala篇:方法默认参数和变长参数

scala在方法型参中可变参数和默认参数的方法 object ScalaTest { def main(args: Array[String]): Unit = { sayHello("zs") println(sum(1, 2, 3, 4, 5, 6)) } /** * 默认参数 * * @param name * @param f...

大小鱼鱼鱼鱼鱼 405

Homebrew 必备软件清单:我的 macOS 开发环境搭建全记录

本文详细介绍了如何使用Homebrew在macOS上搭建高效的开发环境,包括基础配置、核心开发工具链、高效编码工具集等30个必备工具。通过Homebrew这一macOS缺失的包管理器,开发者可以一键安装命令行工具和GUI应用,大幅提升工作效率。文章还提供了日常维护命令和疑难问题解决方案,适合从新手到资深开发者的所有用户。

weixin_28836507的博客 354

scala默认参数和命名参数

def addInt(a:Int = 1,b:Int = 2): Int ={ a+b } def main(args: Array[String]): Unit = { println(addInt()) // 不传入参数,两个参数使用默认值 println(addInt(2)) // 传入参数,参数b使用默认参数 println(addInt(b=3)) // 指定

wk022的专栏 2584

29、5G PUCCH格式及资源配置详解

本文详细解析了5G通信系统中的物理上行控制信道(PUCCH)的不同格式及其资源配置方案。PUCCH负责传输上行控制信息(UCI),包括混合自动重传请求(HARQ)确认信息、调度请求(SR)和信道状态信息(CSI)等。文章从PUCCH的基本概念出发,深入分析了格式0到格式4的特点、编码调制方式、干扰随机化机制以及适用场景,并探讨了PUCCH资源集的配置方法和上行控制信令在PUSCH上的传输机制。通过对比不同格式的传输能力、干扰随机化方式和频率跳变能力,为读者提供了选择合适PUCCH格式的决策依据。最后,文章总

oil88的博客 252

使用R语言整理GEO数据的简易教程

本教程介绍了使用R语言从GEO数据库下载数据并进行数据整理的基本步骤。根据实际研究问题,你可能需要进行更复杂的数据处理和分析。R语言作为一种强大的生物信息学工具,为GEO数据的整理、分析和可视化提供了丰富的功能和工具。希望这个教程能够帮助你入门GEO数据整理和R语言的应用。如果你在使用过程中遇到问题,或需要进一步的指导,请随时向我询问。祝你在GEO数据分析的旅程中取得成功!

Mrrunsen的博客 3744

支付宝即时到账PC端和wap移动端的区别

其实PC端和移动端基本都是一样的,就一个参数不同(method参数),也就是产品类型参数: PC 为alipay.trade.page.pay wap移动端 为 alipay.trade.wap.pay

xxwd12的博客 1148

ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII

1,设置EMIO方式引出ETHE1 2,从GMII过度到RGMII GMII: 发送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er 接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er RGMII: 发送 tx_clk tx_d[3:0] tx_ctrl 接收 rx_clk rx_d[3:0] rx_ctrl 首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1

wangjie36的博客 1万+

Scala2.8新特性:使代码更简洁的命名参数和默认参数

原文: 翻译:Xuefeng Wu Scala 2.8会引入很多有趣的新特性,比如重新设计的集合类库,命名和默认参数,支持continuations,a pimped REPL,等。等下我会展示命名的和默认参数会使我们的Scala代码更加简明。 让我们举一个用Scala 2.7的例子:一个有ID,订单项和运输模式的订单。 [code="Scala"] case class O...

benewu的专栏 210

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Scala—函数用法详解(scala函数初步)

函数初步

喻师傅的学习笔记 2965

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

适用于Eclipse 2.8.0 Final的Scala和Scala IDE!

Scala 2.8.0进入决赛! Scala 2.8.0 Final现已发布! Scala 2.8.0代码库具有重新设计的集合库和处理数组的新方案。 Scala 2.8.0添加了专用的类型参数,以及命名参数和默认参数。 类型推断已扩展为处理类型构造函数,隐式解析过程现在可以确定类型变量。 用于Eclipse的Scala IDE正式发布! 紧随Scala 2.8.0 Final之...

137

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

scala学习笔记-默认参数和带名参数(4)

默认参数 在Scala中,有时我们调用某些函数时,不希望给出参数的具体值,而希望使用参数自身默认的值,此时就定义在定义函数时使用默认参数。 1 def sayHello(firstName: String, middleName: String = "William", lastName: String = "Croft") = firstName + " " + middleN...

aams46841的博客 250

【Scala】Windows下安装Scala(以Scala 2.11.12为例)

Windows下安装Scala(以Scala 2.11.12为例)

tttzzzqqq2018的博客 1万+

Scala可变参数列表,命名参数和参数缺省

重复参数 Scala在定义函数时允许指定最后一个参数可以重复(变长参数),从而允许函数调用者使用变长参数列表来调用该函数,Scala中使用“*”来指明该参数为重复参数。例如: 1 2 3 4 5 6 7 8 9 10 11 12 scala> def echo (args: String *) =      |   for (

春华秋实 1262

Scala2.8预览——值得期待

  [url=http://www.scala-lang.org]Scala[/url]在2.7.4之后的下一个重要版本将会是2.8。相对以前的版本,该版本将作出飞跃性的改进:包括一些期盼已久的特性,一些重大的修改和增添。  [size=large] [b]Scala2.8中包含的特性:[/b][/size] [b][color=blue]1.重新设计的集合框架。[/color][/b...

JavaSxy的专栏 303

Scala函数定义完全指南:从基础语法到高阶应用

1. 引言:函数是一等公民2. 函数 vs 方法:首先理解概念3. 定义方法:使用 def 关键字3.1 基本语法3.2 最简单的函数3.3 带参数的函数3.4 多个参数3.5 无参函数的特殊规则4. 返回类型的指定规则4.1 必须指定返回类型的情况4.2 可以省略返回类型的情况4.3 特殊返回类型:Unit4.4 返回类型选择流程图5. 函数字面量:使用 => 定义函数5.1 基本语法5.2 函数赋值给变量5.3 多参数函数5.4 无参数函数5.5 方法的ETA展开6. 高阶函数:函数作为参数和返回值。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3619

alt-tab-macos 的 TabReadPolicy 源码解析:如何把“每次切换都读一次标签页“压成滚动兜底策略

本篇文章聚焦 alt-tab-macos 中 `TabReadPolicy` 这一状态机策略:它决定每次呼出切换器(switcher show)时,哪些被跟踪窗口值得为一次系统标签页读取(`AXTabGroup`)买单。读完本文,你将理解为什么"每次把所有窗口的标签页都读一遍"在 macOS 上是笔巨大的跨进程开销、事件流如何取代轮询成为真正的正确性机制、四条判定规则与滚动兜底(rolling b

gitblog_01019的博客 825

Scala函数

1、函数的定义和使用 package com.imooc.scala.scala3 /** 函数的定义和使用 */ object FunctionApp { def main(args: Array[String]): Unit = { println(test1(“张三”,15))//有返回值 println(test2())//简化版函数 println(test2)//scala 在调用函数时,如果函数没有参数,调用时函数名后面可以不加括号 test3()//无返回值 test3 } /** *

zhaoxiaoba123的博客 180

Scala与Java互操作性:Effective Scala中的兼容性最佳实践

在现代企业级应用开发中,Scala与Java的互操作性是提升开发效率的关键能力。Twitter的Effective Scala指南作为业界公认的Scala开发规范,详细阐述了如何在保持Scala语言特性的同时,确保与Java生态系统的无缝协作。本文将系统梳理这些兼容性最佳实践,帮助开发者在混合语言项目中避免常见陷阱,充分发挥两种语言的优势。 ## 为什么Scala-Java互操作性如此重要?

gitblog_00695的博客 1101

Scala包

在 Scala 中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对应包下所有 class 和 object 的共享变量,可以被直接访问。(1) 若使用 Java 的包管理风格,则包对象一般定义在其对应包下的 package.scala。修饰对象,不能改变对象的引用(即:内存地址),可以改变对象属性的值。如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可。// 如果参数有默认值,在调用的时候,可以省略这个参数。// 一般情况下,将有默认值的参数放置在参数列表的后面。

zzh555555120的博客 954

Scala之 函数式编程二*

文字有点多 文字有点多,放一起会很卡,所以分开放了. 可变参数 有参数输出Array类型,如果没有参数就输出List类型的 def test(s: String*): Unit = { println(s) } test() test("params1") test("params1", "params2") 输出 List() ArraySeq(params1) ArraySeq(params1, params2) 如果参数列表中存在多个参数,那

张俊杰 的博客 661
上一篇: JavaFX1.2的性能貌似有了很大的提升
下一篇: Scala2.8尝鲜:使用Numeric让基本类型范型化
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值