You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4自定义函数参数标签调用误区及强制使用咨询

关于Swift函数参数标签必填性的问题解答

首先得帮你理清楚整个逻辑:你写了这样一个Swift函数:

func greet(person person: String, on day: String) -> String { 
    return "Hello \(person) on \(day)" 
}

一开始误以为在Swift 4里能直接用greet("John", "23")调用(觉得自定义参数标签能像用_那样被省略),所以想找办法强制调用时必须带上person:和on:标签,但后来你也发现了——这个问题其实不成立,因为自定义参数标签本身就是默认必填的。

为什么会有初始误解?

大概率是混淆了Swift参数标签和参数名的规则:

  • 如果函数定义时只写了一个参数名称(比如func greet(_ person: String, _ day: String)),调用时才可以省略标签;
  • 但像你这样明确指定了参数标签(person和on),调用时必须带上这些标签,否则编译器直接报错。

实际验证一下

你要是试着用greet("John", "23")调用你的函数,Swift编译器会立刻抛出错误:Missing argument labels 'person:on:' in call——这说明你根本不需要额外做任何设置来强制要求使用标签,Swift已经默认帮你把这件事搞定了。

补充:如果想让参数标签可选怎么办?

反过来讲,要是你真的想让某个参数可以省略标签,才需要显式用_作为参数标签,比如:

func greet(_ person: String, on day: String) -> String { 
    return "Hello \(person) on \(day)" 
}

这时候调用时就能写成greet("John", on: "23"),person的标签被省略了,但on标签还是必须带上。

内容的提问来源于stack exchange,提问作者Alex Sfinx87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:34:39