Swift中如何在函数内获取传入参数的变量名并转为字符串打印
解决方案
你可以借助 Swift 内置的#expression特殊字面量实现需求,它会自动捕获调用函数时传入的表达式原文字符串,不需要额外修改调用逻辑。
最终实现代码
func printValue(_ variable: Double, expression: String = #expression) { print(expression, "=", variable) }
你原有的调用代码printValue(positionX)不需要做任何修改,#expression会自动把传入的参数名positionX作为字符串赋值给expression参数,运行后就能得到你想要的输出效果。
额外说明
- 该特性依赖 Swift 5.4 及以上版本,Xcode 12.5 及以上版本默认支持。
- 你提供的示例代码存在拼写错误:变量声明时的名称是
poisitionX(多了一个字母i),调用时用的是positionX,需要把命名统一才能正常编译运行。 - 如果需要适配任意类型的变量打印,可以改成泛型版本,适配性更强:
func printValue<T>(_ variable: T, expression: String = #expression) { print(expression, "=", variable) }
- 如果是低于 Swift 5.4 的版本,只能手动传入变量名字符串,调用方式为
printValue(positionX, expression: "positionX")。
内容的提问来源于stack exchange,提问作者Ahmed Eid
相关产品推荐
相关产品推荐

