如何在Swift REPL中抑制变量赋值时的完整值转储输出?
抑制Swift REPL的自动变量转储输出
遇到这个问题确实挺闹心的,尤其是处理大型结构体的时候,满屏的输出直接把之前的命令行内容都覆盖了,完全打乱操作节奏。这里有两个实用方法可以解决:
临时抑制单条语句的输出
如果只是想针对某一次赋值避免输出,你可以在赋值语句末尾加上分号和()(Void字面量)。REPL会执行完赋值后,以一个无返回值的表达式结尾,这样就不会自动打印变量的完整内容了:
let a = SomethingComplex(); ()
执行这条命令后,REPL只会回到提示符,不会输出任何结构体转储内容。之后如果想查看a的值,直接输入变量名回车即可。
全局关闭当前会话的自动打印
要是希望整个REPL会话都不再自动输出赋值结果,可以用REPL的内置配置命令:
:set repl print-result false
执行后,所有后续的赋值语句都不会自动打印变量内容。如果之后需要恢复默认的自动打印行为,输入:
:set repl print-result true
举个实际对比的例子:
未抑制时的输出:
1> let a = SomethingComplex() a: SomethingComplex = { list = 3 values { [0] = { edges = 4 values { [0] = { id = 1 from = 0x0000000100506110 { edges = 4 values { [0] = { id = 3 from = 0x0000000100506a50 { edges = 4 values { [0] = { id = 5 from = 0x0000000100506820 {...} to... } } } } } } } } } } }
全局抑制后的输出:
1> :set repl print-result false 1> let a = SomethingComplex() 1> // 无任何自动输出 1> a // 手动查看变量时依然会输出完整内容 a: SomethingComplex = { // 完整结构内容 }
内容的提问来源于stack exchange,提问作者Taketo Sano
相关产品推荐
相关产品推荐

