Swift方法参数中有3个项目是什么?

时间:2015-01-02 03:22:44

标签: swift

示例:

mutating func moveByX(deltaX: Double, y deltaY: Double)

第一个参数采用Double并将其作为deltaX保存在该方法范围内。但是,ydeltaY是什么?

我读了这篇文章但找不到任何相关内容:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html

4 个答案:

答案 0 :(得分:2)

在您的示例中,

如果您熟悉Objective-C,则这对应于具有以下声明的方法:

-(void)moveByX:(double)deltaX y:(double)deltaY;

答案 1 :(得分:2)

这就是Swift模仿Objective C命名参数(参数的伪命名)的方式。它很容易分解。

mutating func moveByX(deltaX: Double, y deltaY: Double)
                1        2      3     4   5       6
  1. 方法名称的开头
  2. 第一个参数名称
  3. 第一个参数类型
  4. 方法名称的第二部分
  5. 第二个参数名称
  6. 第二个参数类型

在此示例中,该方法实际上称为moveByX:y:等效的Objective C方法定义如下所示。

- (void)moveByX:(Double)deltaX y:(Double)deltaY

调用此方法时,名称的第二部分将与其余参数一起单独包含。

var dub = Double(0.5)
moveByX(dub, y: dub)

答案 2 :(得分:1)

swift中的方法同时具有外部参数名称和本地参数名称。如果只定义了一个swift编译器放入默认值,则首先定义外部然后定义外部。

默认情况下,Swift在方法中为第一个参数名称提供本地参数名称,默认情况下为第二个和后续参数名称提供本地和外部参数名称。

在示例中,“y”是调用方法时使用的外部参数,“deltaY”是在该函数的内部计算中使用的变量名。

您还可以使用_表示您不希望参数具有外部名称。 当外部和内部名称相同时,#用于速记。

示例

1)

func exampleFunction(externalVarName1 localVarName1: Int, externalVarName2  localVarName2: Int) {}
像这样调用

 exampleFunction(externalVarName1: 0, externalVarName2: 0)

2)

func exampleFunction2(autocompleteHintName: Int, autocompleteHintName2: Int) {}
像这样调用

exampleFunction2(0, 0)

3)

func exampleFunction3(#nameForBoth: Int, #nameForBoth2: Int) {}
像这样调用

exampleFunction3(nameForBoth: 0, nameForBoth2: 0)

4)

func exampleFunction4(nameForBoth nameForBoth: Int, nameForBoth2 nameForBoth2: Int) {}

与3)相同,但会发出警告,可以使用#shorthhand。这样称呼

exampleFunction4(nameForBoth: 0, nameForBoth2: 0)

5)

func exampleFunction5(_: Int, _: Int) {}
像这样调用

 exampleFunction5(0, 0)

答案 3 :(得分:0)

在编写函数时,

deltaXdeltaY是参数名称。但是,当您调用该函数时,它将被调用为movebyX(val, y: val),其中val被您传入函数的Double替换。中间的y本质上是为了帮助函数在被调用时的可读性,并且在swift中是常见的做法,使代码尽可能可读(调用函数的人可以轻松地告诉每个参数是什么而不需要查看函数头)。