当前位置: 首页 > 面试题库 >

在Swift中使用函数参数名称

从焱
2023-03-14
问题内容

在Swift中,调用第一个参数时会使用参数名称。为什么不使用名字?

使用Swift手册的变体;

var count2: Int = 0
func incrementBy2(amount: Int, numberOfTimes times: Int) {
count2 += amount * times}

这会起作用;

incrementBy2(2, numberOfTimes: 7)

但这给了我“调用中的外部参数标签’amount’”

incrementBy2(amount: 2, numberOfTimes: 7)

是否有这个原因,或者这是“按其原样”的事物之一?


问题答案:

这是遵循Objective-C习惯的惯例,第一个参数的名称与方法名称结合在一起。这是一个例子:

- (void)incrementByAmount:(NSInteger)amount
            numberOfTimes:(NSInteger)times
{
    // stuff
}

您可以像这样调用方法:

[self incrementByAmount:2 numberOfTimes:7];

通过将参数的名称合并到方法的名称中,可以使阅读更加自然。在Swift中,您可以通过以下方法实现相同目的:

func incrementByAmount(amount: Int, numberOfTimes: Int) {
    // same stuff in Swift
}

并调用如下方法:

incrementByAmount(2, numberOfTimes: 7)

如果您不想使用此约定,Swift可以使您更加明确,并定义单独的内部和外部参数名称,如下所示:

func incrementByAmount(incrementBy amount: Int, numberOfTimes: Int) {
    // same stuff in Swift
    // access `amount` at this scope.
}

您可以这样调用方法:

incrementByAmount(incrementBy: 2, numberOfTimes: 7)


 类似资料:
  • 问题内容: 我在课堂上有这个功能: 我尝试使用此函数来调用该函数: 问题是编译器希望它看起来像这样: 为什么第一个会导致错误? 问题答案: Swift 2.0更新 :现在,默认情况下,函数的功能与方法相同,并且对于两种方法而言: 第一个参数没有外部名称;和 其他参数的外部名称与内部名称相同。 除此之外,下面的规则仍然适用,只是速记语法已消失。 这是一个更一般的答案:函数在类之外定义为真函数时以及在

  • 问题内容: 在C#中,可以通过指定类型来调用泛型方法: Swift不允许您在调用通用方法时对它进行专门化处理。编译器希望依靠类型推断,因此这是不可能的: 我需要的是一种使用泛型将类型传递给函数并返回该类型对象的方法 这可行,但是不适合我想做的事: 编辑(澄清) 我可能不太清楚问题的实质,这全都是关于调用返回给定类型(任何类型)的函数的简单语法。 举一个简单的例子,假设您有一个Any数组,并创建了一

  • 问题内容: 我对PHP函数的默认值感到困惑。说我有一个这样的功能: 如果我想为$ x使用默认参数并为$ y设置不同的参数怎么办? 我一直在尝试不同的方法,但我变得更加困惑。例如,我尝试了以下两种方法: 但是这两个都不会为$ x产生适当的默认参数。我也试图通过变量名来设置它。 我完全希望这样的事情能奏效。但这根本不符合我的预期。似乎不管我做什么,每次调用该函数时,无论如何我都必须最终键入默认参数。而

  • 是否可以使用等待与参数?例如: 即使是这样,似乎也不是最好的主意。以前有人这样做过吗?

  • 问题内容: Postgres noobie在这里。 我正在尝试将SQL Server存储的proc转换为Postgres函数。当前无法弄清楚如何将此SQL行转换为Postgres。 SQL Server: Postgres: 我收到错误消息“第n列不存在”。如何在Postgres函数的select语句中引用参数? 更新: Postgres函数的定义 问题答案: 修订:正如评论中指出的那样,该答案在

  • 本文向大家介绍Swift中的可变参数函数介绍,包括了Swift中的可变参数函数介绍的使用技巧和注意事项,需要的朋友参考一下 可变参数函数指的是可以接受任意多个参数的函数,我们最熟悉的可能就是 NSString 的 -stringWithFormat:方法了。在 Objective-C 中,我们使用这个方法生成字符串的写法是这样的: 这个方法中的参数是可以任意变化的,参数的第一项是需要格式化的字符串