一、什么是外部参数名?

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

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

性质:

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

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

用法示例:

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

我们一般这样调用:

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

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

应该这样调用:

所谓argument labels 即 外部参数名。

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

原因是:

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

修改方法的外部参数名称

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

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

应该这样定义方法:

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

应该这样定义方法:

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

这样定义:

这样调用:

swift 方法的局部和外部参数名相关推荐

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

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

  2. Swift 方法的多面性

    虽然 Objective-C 的语法相对于其他编程语言来说写法有点奇怪,但是当你真正使用的时候它的语法还是相当的简单.下面有一些例子: + (void)mySimpleMethod {// 类方法// ...

  3. 转载 Swift方法的多面性

    原文链接  http://www.cocoachina.com/swift/20141002/9779.html 虽然 Objective-C 的语法相对于其他编程语言来说写法有点奇怪,但是当你真正使 ...

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

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

  5. JAVA通过反射获取方法真实参数名

    默认情况下,我们是无法获取到方法中参数的名称,通过反射机制也只能获取到类似于arg0,arg1这样表示参数顺序的"参数名" 这样当我们需要使用方法的实际参数时,比方说spring自 ...

  6. java getparameter 乱码_request.getParameter(“参数名”) 中文乱码解决方法

    今天浏览项目时候,遇到一个问题,页面用${requestScope.参数名 }获取的值是乱码,然后搜了一下,最后说是编码的问题,附上查找的结果: 在Java 开发中,如果框架搭建的不完善或者初学者在学 ...

  7. java xfire指定参数名_Java如何获取方法参数具体名称?这是个好问题!

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. 默认情况下,我们是无法获取方法中参数名称的.通过反射机制,也只能得到参数的顺序以及一些没有意义的变量:arg0.arg1等 ...

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

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

  9. requestmapping里面的参数_如何通过反射获得方法的真实参数名(以及扩展研究)...

    前段时间,在做一个小的工程时,遇到了需要通过反射获得方法真实参数名的场景,在这里我遇到了一些小小的问题,后来在部门老大的指导下,我解决了这个问题.通过解决这个问题,附带着我了解到了很多新的知识,我觉得 ...

最新文章

  1. Java class.forname 功能介绍
  2. Ubuntu 14.04 安装 Sublime Text 3
  3. JZOJ 5267. 费马点问题
  4. B16_NumPy线性代数(dot,vdot,inner,matmul,determinant,solve,inv)
  5. java web空白xml_【图片】我做的JSP+Servlet程序,插入信息提交后出现空白页面,不知道是…【java吧】_百度贴吧...
  6. 算法基础:常用的查找算法知识笔记
  7. 视觉SLAM——D435i运行ORB-SLAM3-mono(依赖ros版)
  8. 计算机三种不同类型的用户账户,计算机应用基础(第2版)教学课件作者陈绥阳第二章.ppt...
  9. 「代码随想录」 377. 组合总和 Ⅳ 【动态规划】力扣详解!
  10. 使用USBWriter等工具做U盘启动盘后容量变小的解决办法
  11. systemctl重新加载_CentOS7利用systemctl添加自定义系统服务【转】
  12. activiti多人会签
  13. 执念斩长河专升本复习11月总结
  14. C语言(求最小公倍数的3种方法)
  15. multisim变压器反馈式_基于Multisim的电压串联型负反馈电路的仿真与分析
  16. 力扣46.全排列(回溯法)
  17. Excel单元格格式设置——日期型切换语种
  18. 记录ideavim,使用tab技巧
  19. Python实现RSA数字签名一
  20. 谷歌浏览器取消自动升级

热门文章

  1. NBT:未培养病毒基因组的最少信息标准(MIUViG)
  2. Microbiome:应用多维宏组学方法协同揭示复杂细菌群落对目标底物代谢的菌间相互关系(一作解读)...
  3. pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
  4. R语言构建随机森林模型错误解决:Error in y - ymean : non-numeric argument to binary operator
  5. R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)
  6. R包操作相关:安装、卸载、加载、移除、已经安装的包、包的路径、函数查看等
  7. 开源自动机器学习(AutoML)框架盘点
  8. 修改 jar 的一些体会
  9. 使用Oracle创建图书馆数据库
  10. 基于多准则决策分析的多因素降维方法检测基因基因相互作用 Multi-factor dimensionality reduction method based on multi-criteria dec