Swift方法参数中的3项是什么?
例如:Swift方法参数中的3项是什么?,swift,Swift,例如: mutating func moveByX(deltaX: Double, y deltaY: Double) 第一个参数接受一个Double并将其保存在该方法范围中,作为deltaX。但是,什么是y和deltaY 我读了这篇文章,找不到任何相关信息:deltaX和deltaY是编写函数时的参数名。但是,当您调用函数时,它将被称为movebyX(val,y:val),其中val被传递到函数中的双精度替换。中间的Y本质上是为了帮助函数在调用时的可读性,并且是SWIFT中使代码尽可能可读的
mutating func moveByX(deltaX: Double, y deltaY: Double)
第一个参数接受一个Double并将其保存在该方法范围中,作为deltaX
。但是,什么是y
和deltaY
我读了这篇文章,找不到任何相关信息:
deltaX
和deltaY
是编写函数时的参数名。但是,当您调用函数时,它将被称为movebyX(val,y:val)
,其中val
被传递到函数中的双精度替换。中间的Y本质上是为了帮助函数在调用时的可读性,并且是SWIFT中使代码尽可能可读的常用方法(调用函数的人可以很容易地查看每个参数而不看函数头)。.deltaX
和deltaY
是编写函数时的参数名称。但是,当您调用函数时,它将被称为movebyX(val,y:val)
,其中val
被传递到函数中的双精度替换。中间的Y本质上是为了帮助函数在调用时的可读性,并且是SWIFT中使代码尽可能可读的常用方法(调用函数的人可以很容易地查看每个参数而不看函数头)。
是y
是本地参数名,并且deltaY
是参数的类型Double
-(void)moveByX:(double)deltaX y:(double)deltaY;
以你为例,
是y
是本地参数名,并且deltaY
是参数的类型Double
-(void)moveByX:(double)deltaX y:(double)deltaY;
这就是Swift模仿Objective C的命名参数(参数的伪命名)的方式。它很容易崩溃
mutating func moveByX(deltaX: Double, y deltaY: Double)
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)
这就是Swift模仿Objective C的命名参数(参数的伪命名)的方式。它很容易崩溃
mutating func moveByX(deltaX: Double, y deltaY: Double)
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)
swift中的方法具有外部参数名和本地参数名。如果只定义了一个,则先定义外部,然后再定义外部。swift编译器会将默认值设置为 Swift默认为方法中的第一个参数名提供本地参数名,默认为第二个和后续参数名提供本地和外部参数名 在本例中,“y”是调用该方法时使用的外部参数,“deltaY”是该函数内部计算中使用的变量名 还可以使用u表示不希望参数具有外部名称。 #当外部名称和内部名称相同时,用于速记 例子 (一) 这就是所谓的:
exampleFunction(externalVarName1: 0, externalVarName2: 0)
(二)
是这样叫的
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
(三)
是这样叫的
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
(四)
与3)相同,但会抛出一个警告,提示可以使用#shorthhand。这样叫
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
(五)
是这样叫的
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
swift中的方法具有外部参数名和本地参数名。如果只定义了一个,则先定义外部,然后再定义外部。swift编译器会将默认值设置为 Swift默认为方法中的第一个参数名提供本地参数名,默认为第二个和后续参数名提供本地和外部参数名 在本例中,“y”是调用该方法时使用的外部参数,“deltaY”是该函数内部计算中使用的变量名 还可以使用u表示不希望参数具有外部名称。 #当外部名称和内部名称相同时,用于速记 例子 (一) 这就是所谓的:
exampleFunction(externalVarName1: 0, externalVarName2: 0)
(二)
是这样叫的
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
(三)
是这样叫的
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
(四)
与3)相同,但会抛出一个警告,提示可以使用#shorthhand。这样叫
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
(五)
是这样叫的
exampleFunction2(0, 0)
exampleFunction3(nameForBoth: 0, nameForBoth2: 0)
exampleFunction4(nameForBoth: 0, nameForBoth2: 0)
exampleFunction5(0, 0)
奇怪的是,这不是更具可读性吗-(void)moveByX:(双)deltaX moveByY:(双)deltaY@SamB外部名称背后的思想是使调用“读起来像英语一样”。在
Y
前面重复moveBy
会让我们离这个目标更远。奇怪的是,这不是更容易理解吗-(void)moveByX:(双)deltaX moveByY:(双)deltaY@SamB外部名称背后的思想是使调用“读起来像英语一样”。在Y
前面重复moveBy
会让我们离目标更远。只有两个参数,其中一个有外部名称。只有两个参数,其中一个有外部名称。我对Objective-C不熟悉。我刚用Swift跳上了iOS。那么,这种方法是可选的吗?@user83039您不必这样命名函数,但我们鼓励这样做。这些方法应该是自己做的