Swift 斯威夫特的严格化

Swift 斯威夫特的严格化,swift,Swift,在swift中是否有严格的规定,由于没有预处理器,这似乎有点困难 我想做的事情与下面的代码类似 // log a variable name and its value #define LOGV(V) NSLog(@"%s = %@", #V, V); NSString *myString = @"this"; LOGV(myString); // prints out -> "myString = ???" 查看dump后,似乎无法反映变量名 let myString = "t

在swift中是否有严格的规定,由于没有预处理器,这似乎有点困难

我想做的事情与下面的代码类似

// log a variable name and its value
#define LOGV(V) NSLog(@"%s = %@", #V, V);
NSString *myString = @"this";
LOGV(myString);    // prints out ->  "myString = ???"
查看
dump
后,似乎无法反映变量名

let myString = "this"
dump(myString, name:"myString", indent: 0 maxDepth: 0, maxItems: 1)

在Swift中无法做到这一点。如果您确实想这样做,那么总是可以在您的Swift源代码上运行C预处理器。

我也想在Swift中执行同样的操作, 所以我最近编写了debug logging util,它在运行时将变量字符串化(读取整个代码!)

你可能会发现这很有趣。

通常不应使用此类代码。这就是为什么在Swift(以及大多数其他高级语言)中无法实现这一点的原因。