一、什么是外部参数名?

浅显地说,外部参数名就是在调用一个方法时要在方法的参数前面加上一个特定的名字,目的是便于阅读代码,提高维护效率。

 

二、在最新的Xcode中,外部参数名的性质与用法如下

性质:

函数可同时有局部名称(内部使用)和外部名称(调用函数时使用),方法的参数也类似,不过方法和函数的局部名称和外部名称的默认行为是不一样的

Swift中默认给第一个参数名称一个局部参数名称,第二和后续的参数局部参数名称和外部参数名称默认相同

用法示例:

在其他语言中如果我们这样定义一个方法:

 

我们一般这样调用:

 

而Swift中这种写法是有错误的,

如上的定义方法,系统报错如下:

应该这样调用:

所谓argument labels 即 外部参数名。

 

我在第一次接触到这个东西时不知所措,因为我并没有显示的制定外部参数名,但是系统给添加了默认的与形参相同的外部参数名。但是奇怪的是第一个参数x却没有默认制定外部参数名。

 

原因是:

Swift中默认给第一个参数名称一个局部参数名称,第二和后续的参数局部参数名称和外部参数名称默认相同。

修改方法的外部参数名称

有时为方法的第一个参数提供外部参数名也是有用的,可以显示在参数前添加#号
如果不想为方法的第二个及后续参数提供外部参数名称,在前面使用下划线 (_) 作为该参数的显式外部名称。

 

1、比如,你想要这样调用方法:

应该这样定义方法:

 

2、又比如,你想要这样调用方法:

应该这样定义方法:

 

3、或者显示制定其他的外部参数名

这样定义:

这样调用:

 

参考页面:

http://blog.csdn.net/huangchentao/article/details/32715179

Swift开发经验——外部参数名的更多相关文章

  1. Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

    Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...

  2. Swift函数_外部参数名,

    //1________________ /** *没使用外部参数名的函数 */ func inputScore(name:String,score1:Int,score2:Int) { } /** * ...

  3. Swift - 28 - 内部参数名和外部参数名

    //: Playground - noun: a place where people can play import UIKit // 外部参数的作用是为了让程序员调用代码的时候能清晰的看出所传参数 ...

  4. Swift 函数调用到底写不写参数名

    最近真正开始学 Swift,在调用函数的时候遇到一个问题:到底写不写函数名? 我们来看两个个例子: // 1 func test(a: Int, b: Int) ->Int { return a ...

  5. swift中_的用法,忽略默认参数名。

    swift中默认参数名除了第一个之外,其他的默认是不忽略的,但是如果在参数的名字前面加上_,就可以忽略这个参数名了,虽然有些麻烦,但是这种定义也挺好,而且不想知道名字或者不想让别人知道名字的或者不用让 ...

  6. Swift 函数做参数和闭包做参数的一个细节差别

    函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...

  7. Swift函数_inout参数

    //无inout参数的函数 func changeName(var name:String){ name = "Hello" println(name) } let payerNa ...

  8. Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

    Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...

  9. Swift Internal Parameter and External Parameter 外部参数和内部参数

    今天跟大神又学习了些关于IOS开发Swift语言的外部参数和内部参数 func doSomething(num1: Int, num2: Int) -> Int { return num1 + ...

随机推荐

  1. 封装getByClass(JS获取class的方法封装为一个函数)

    获取方法一(普通版) 获取单一的class: function getByClass(oParent, sClass) {//两个形参,第一个对象oParent 第二个样式名class var aEl ...

  2. nodejs与sqlite

    //打开数据库var db = new sqlite3.Database('xx.db'); // 关闭数据库db.close(); db.run('xx');  // 数据库对象的run函数可以执行 ...

  3. mysql5.7.11安装遇到的问题

    首次安装mysql5.7.11绿色版,真是破费功夫,现记录安装中遇到的问题,只是解决了问题,而不清楚问题的由来. 问题一: 问题二: 问题三: 问题四: 我的my.ini配置文件: [mysql] # ...

  4. Liberty中应用的contextroot

    参考:http://www-01.ibm.com/support/knowledgecenter/api/content/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ ...

  5. centos 下构建lamp环境

    构建准备: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp - ...

  6. Linux curl命令【curl】

    命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具 ...

  7. Shell中的while循环【转】

    转自:http://blog.chinaunix.net/uid-25880122-id-2901409.html while循环的格式   while expression do command c ...

  8. 如何在xcode中启用xib方式做应用

    使用storybord的好处和缺点这里不一一说,但是很多人可能习惯xib的方式进行应用的开发. 在xcode环境下可参考如下链接进行设定. http://codefromabove.com/2014/ ...

  9. 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

    来自:http://blog.csdn.net/lvxiangan/article/details/8151670 ------------------------------------------ ...

  10. __rb_tree_rebalance

    Inline void __rb_tree_rebalance(__rb_tree_node_base* x, __rb_tree_node_base*& root) //当前节点,根 { x ...