阅读更多

12顶
0踩

编程语言

原创新闻 Scala2.8尝鲜:命名参数与默认参数

2009-06-05 09:24 by 见习编辑 Eastsun 评论(6) 有4315人浏览
  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
12
0
评论 共 6 条 请登录后发表评论
6 楼 houniao 2009-06-06 10:53
默认参数actionscript早支持了
5 楼 gakaki 2009-06-06 08:18
哦哟 这个连PHP都有 弄点ola bani说的语法把 没特点ruby都有
4 楼 whaosoft 2009-06-06 00:57
这是干什么的呀 js?
3 楼 Eastsun 2009-06-06 00:55
mikeandmore 写道

第一个很象python啊

很多动态语言里面有命名参数,貌似C#也有?
2 楼 mikeandmore 2009-06-05 21:05
第一个很象python啊
1 楼 dennis_zane 2009-06-05 12:38
默认值这个很方便,早就该添加了。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 未公开API函数的完整说明(很全的版本)

    未公开API函数的完整说明或者叫做未文档化API函数的完整说明。如果您是一位有一定经验的应用程序或者驱动开发程序员,那么您一定知道这份资料对于您的价值和意义。微软出于某些考虑,并没有在MSDN上面把所有的API都公布出来,但是API虽然事实存在于各个版本的操作系统中。某些时候使用正确合理的使用这些未公开的API函数,可以起到事半功倍和意想不到的效果,轻松实现某些本来很难实现的特殊的功能。 本文档以PDF格式,分类清晰,注解详细,从应用程序开发,到系统驱动开发,从进程,文件处理,到虚拟内存,即插即用,电源管理,注册表,NTFS文件格式,无所不包。总共分成21个大类,几千个没有公开的API函数的详细说明! 1 System Information and Control 1 2 Objects, Object Directories, and Symbolic Links 59 3 Virtual Memory 81 4 Sections 101 5 Threads 113 6 Processes 133 7 Jobs 175 8 Tokens 189 9 Synchronization 207 10 Time 241 11 Execution Profiling 247 12 Ports (Local Procedure Calls) 256 13 Files 277 14 Registry Keys 341 15 Security and Auditing 371 16 Plug and Play and Power Management 391 A Miscellany 405 B Calling System Services from Kernel Mode 429 C Intel Platform-Specific Entry Points to Kernel Mode 435 D Exceptions and Debugging 439 E NTFS On-Disk Structure 457

  • Windows未公开的API

    Windows未公开的API,一本找了很久的资料,有需要的朋友可以下载

  • [笔记]Windows核心编程《番外篇》常用的NT API及使用示例

    文章目录前言NtQueryInformationProcess函数原型附录用例总结 前言 NTAPI:泛指ntdll.dll模块不对外提供的API接口 一般通过动态载入库的方式(LoadLibrary + GetProcAddress)调用 NtQueryInformationProcess NtQueryInformationProcess NtQueryInformationProcess用法 函数原型 NTSYSCALLAPI NTSTATUS NTAPI NtQueryInformationPro

  • Shell对话框(二)

      外壳对话框(2)2008-01-30 15:40如果函数调用成功的话,返回值是NO_ERROR,如果用户取消的对话框,则返回   -1($FFFFFFFF),如果调用失败则返回其他的错误代码,具体错误信息可以用GetLastError API调用获得。 关闭系统对话框     ExitWindowsDialog和RestartDialog函数可以用来显示关闭和重启系

  • Windows未公开函数揭密(3)

    Windows未公开函数揭密    根据一个特定文件夹对象的ID获得它的目录pidlPublic Function GetPIDLFromFolderID(hOwner As Long, nFolder As SHSpecialFolderIDs) As LongDim pidl As LongIf SHGetSpecialFolderLocation(hOwner, nFolder

  • 如何调用未公开的API函数

     Windows SDK开发包中并未提供所有的API函数,在本文中我将讨论如何调用这种未公开的API函数。事实上所有未公开的API函数都和其它的API函数一样包含在系统的动态链接库中,调用这些函数的方法是取得它们的指针,然后通过指针来进行操作。而取得函数地址,是通过GetProcAddress这个API函数实现的: FARP

  • Windows非公开API函数的调用办法

    Windows非公开API函数的调用办法。

  • 关于windows驱动层调用未公开API

    一般驱动层开发都会调用到ntoskrnl,ntdll导出的API,如果直接使用的话,会报identifier not found的错误。其实API已经实现了,我们的驱动是有内核负责加载的,应该就可以读取到,所以加个声明,如: 如果是ntoskrnl导出的 声明API前加NTKERNELAPI 如果是ntdll导出的 声明前加NTSYSAPI 如: NTKERNELAPI NT

  • 易语言子程序公开c语言,易语言调用DLL未公开的子程序

    .版本2.支持库spec.程序集程序集1.子程序_启动子程序,整数型,,本子程序在程序启动后最先执行.局部变量hMod,整数型.局部变量pBase,整数型.局部变量pFunc,整数型pBase=GetBaseAddr(“dll.dll”,hMod)调用子程序(pBase,,pFunc,pBase,10086,0)调用子程序(pFunc,,,12...

  • Windows未公开函数揭密——之三

    Windows未公开函数揭密——之三http://www.applevb.com 这次介绍的是如何利用Windows未公开函数实现系统文件操作监视功能。利用该功能可以对Windows下的任何文件操作,包括建立文件、文件夹;删除文件;改变文件大小等操作都可以纪录在案。 首先来介绍实现上面操作的两个未公开函数:SHChangeNotifyRegister和SHChangeNotifyDeregis

  • API 公用对话框 通用对话框

    很多程序都要调用公用对话框,比如:打开文件、保存文件、修改颜色、选择字体等等, 这就使得我们发布程序时都要带上COMDLG32.OCX文件,不大方便。笔者在网上收集了用API函 数调用公用对话框的代码,进行了验证,并去伪存真,改正了以讹传讹的错误,适当地添加了 注释,在此发表,供各位使用。对于程序中只用了某一个对话功能(例如只用到了打开文件) 的程序来说,特别有用:从此就不用再带着COMDLG32.OCX文件满世界跑了!你可以根据情况, 选用其中某一个调用的有关代码。

  • 易语言调用DLL未公开的子程序

    @泆寒。

  • 未公开API函数揭秘——通用对话框

    COMDLG32.DLL 为我们提供了一些很有用的对话框,但是仍然有部分我们可能会用到的系统对话框它却没有提供。如果试图复制这些系统对话框将是一件麻烦的苦差事。幸好shell32.dll为我们提供了这些对话框,本文将带你去发掘一些未公开的API函数,以实现这些对话框。在使用未公开的API函数之前,你必须知道声明未公开的API函数与声明那些公开的API函数略有不同,那就是

  • Win API通用对话框之GetOpenFileName

    作为《windows程序设计》对话框-podpad3.c,其是一个大一些的程序了, 这样的大块头, 如果你想消化它, 得慢慢来, 我们首先看GetOpenFileName函数和OPENFILENAME结构了: OPENFILENAME: typedef struct tagOFN { DWORD lStructSize; HWND hwndOwner; H

  • API通用对话框

    #include#include#include#include#include"7_5.h"OPENFILENAME ofn;//定义一个OPENFILENAME结构HINSTANCE hInst;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hIn

  • 未公开的函数 NtQuerySystemInformation

    原文地址:http://hi.baidu.com/%BD%BB%D3%D1%C6%B5%B5%C0/blog/item/a0426c229a03aaa04623e8c7.html 闲了没事,用SoftIce跟踪 TaskMgr 居然看出点门道来,将这些见解和大家共享,文章可能很长,也可能要花很长的时间,反正爱看就看,不爱看就别看。幸亏微软提供了相应的 .PDB 和 .DBG文件,使跟踪

  • 关于未公开函数ZwQuerySystemInformation的使用

    最近看一些关于内核方面的资料,碰到未公开函数,未能在微软官方找到答案,从网上了解到一些信息,摘录下来备用。       我看到驱动程序调用的一段代码的使用: ULONG GetModuleBase(PCHAR szModuleName) { ULONG uSize = 0x10000; PVOID pModuleInfo = ExAllocatePoolWithTag(NonP

Global site tag (gtag.js) - Google Analytics