swift中inout参数传入一个函数,在函数体内print怎么没有被执行?

发布于 2022-09-02 13:09:24 字数 468 浏览 12 评论 0

在一个交换函数中,a和b的值进行交换,使用inout参数传值,这样函数对参数所做的修改将会影响参数本身,但是为什么在swap函数里的print没有被执行?

func swap(inout a : Int , inout b : Int){
    let tmp = a
    print("123")
    a = b
    b = tmp
    
}

var a = 6
var b = 9
print("交换之前,a的值是\(a),b的值是\(b)")
swap(&a, &b)
print("交换之后,a的值是\(a),b的值是\(b)")

输出的结果是:
交换之前,a的值是6,b的值是9
交换之后,a的值是9,b的值是6

swap函数里的print哪里去了???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过期情话 2022-09-09 13:09:24

刚看题的时候,我也蒙了。
开了个 Playground 试了一下,才发现:

你调用的 swap 函数明明就是 Swift 自身提供的!

虽然你上面定义了一个新的 swap 函数。

故,解决方法就是,换个函数名……


顺便告诉你一下:
在 Swift 中,两个数值交换,你可以这样做

(a, b) = (b, a)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文