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

Swift中print(_:separator:terminator:)含义及参数冒号作用咨询

嘿,我来帮你把这两个点掰扯清楚,都是Swift入门时容易卡壳的地方,别慌~

一、搞懂 print(_:separator:terminator:) 到底是干啥的

Apple官方文档有时候确实写得太“官方”了,我用大白话给你解释:这个方法就是用来在控制台输出内容的,但比简单的print("hello")灵活多了,三个参数各有分工:

  • 第一个参数前的 _:这里的下划线是说调用这个参数时可以省略它的外部参数名,你只需要把要打印的内容直接放进去就行。而且它支持传多个值(因为是可变参数),比如print(1, "apple", true)。
  • separator:当你传多个内容给第一个参数时,这个参数用来设置这些内容之间的分隔符,默认是空格。举个例子:
    print(1, 2, 3, separator: ", ")
    // 控制台输出:1, 2, 3
    
  • terminator:控制打印完所有内容后结尾的字符,默认是换行符\n。如果不想换行,就把它设为空字符串,比如:
    print("Hello", terminator: "")
    print("World")
    // 控制台输出:HelloWorld(两个内容在同一行)
    

简单总结:这个方法就是让你自定义打印内容的分隔规则和结尾样式,满足不同的输出需求。

二、函数参数里的 : 以及把函数赋值给变量的逻辑

先来说参数里的::
在Swift的函数定义里,:有两个核心作用:

  1. 分隔参数名和参数类型:比如func sum(a: Int, b: Int)里,a: Int就是说这个参数的内部名字是a,类型是Int。这里的a同时也是外部参数名,所以调用时需要写sum(a: 1, b: 2)。如果想让外部调用时省略参数名,就给参数加下划线,比如func sum(_ a: Int, _ b: Int),调用时直接sum(1,2)就行。
  2. 区分外部和内部参数名:如果想给参数起不同的外部和内部名字,写法是func sum(first a: Int, second b: Int),这里外部参数名是first和second,函数内部用a和b来计算,调用时要写sum(first:1, second:2)。

再看你例子里把函数赋值给变量的情况:

func sum(a: Int, b: Int) -> Int { return a + b }
let addTwoNumbers = sum(a:b:)
addTwoNumbers(1, 2) // 输出3

这里的sum(a:b:)是在引用这个函数的带外部参数名的函数类型。因为Swift里函数是一等公民,可以像变量一样传递。当你写sum(a:b:)时,其实是明确告诉编译器你要引用的是那个需要外部参数名a:和b:的sum函数(如果有同名但参数名不同的函数,这样就能区分开)。赋值之后,addTwoNumbers的类型是(Int, Int) -> Int,调用时既可以直接传位置参数addTwoNumbers(1, 2),也可以用命名参数addTwoNumbers(a:1, b:2),两种写法都有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:31:54