想了解如何在Swift中打印变量的类型或类?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在swift中打印变量的类型或类型数据的相关问题,此外,我们还将为您介绍关于.NET(CSha
想了解如何在 Swift 中打印变量的类型或类?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在 swift 中打印变量的类型或类型数据的相关问题,此外,我们还将为您介绍关于.NET(CSharp)中打印变量的内存地址、bash – 如何在awk中打印变量、ios – 如何使用Swift打印Data类型变量的内容?、ios – 如何在Swift中使用没有类型参数的泛型类?的新知识。
本文目录一览:- 如何在 Swift 中打印变量的类型或类?(如何在 swift 中打印变量的类型或类型数据)
- .NET(CSharp)中打印变量的内存地址
- bash – 如何在awk中打印变量
- ios – 如何使用Swift打印Data类型变量的内容?
- ios – 如何在Swift中使用没有类型参数的泛型类?
如何在 Swift 中打印变量的类型或类?(如何在 swift 中打印变量的类型或类型数据)
有没有办法快速打印变量的运行时类型?例如:
var now = NSDate()var soon = now.dateByAddingTimeInterval(5.0)println("\(now.dynamicType)") // Prints "(Metatype)"println("\(now.dynamicType.description()")// Prints "__NSDate" since objective-c Class objects have a "description" selectorprintln("\(soon.dynamicType.description()")// Compile-time error since ImplicitlyUnwrappedOptional<NSDate> has no "description" method
在上面的示例中,我正在寻找一种方法来表明变量“soon”的类型是ImplicitlyUnwrappedOptional<NSDate>
,或者至少是NSDate!
。
答案1
小编典典2016 年 9 月更新
Swift 3.0:使用type(of:)
, eg type(of: someThing)
(因为dynamicType
关键字已被删除)
2015 年 10 月更新 :
我将下面的示例更新为新的 Swift 2.0 语法(例如println
,被替换为print
, toString()
is nowString()
)。
来自 Xcode 6.3 发行说明 :
在评论中指出Xcode 6.3
发行说明显示了另一种方式:
当与 println 或字符串插值一起使用时,类型值现在打印为完整的解组类型名称。
import Foundationclass PureSwiftClass { }var myvar0 = NSString() // Objective-C classvar myvar1 = PureSwiftClass()var myvar2 = 42var myvar3 = "Hans"print( "String(myvar0.dynamicType) -> \(myvar0.dynamicType)")print( "String(myvar1.dynamicType) -> \(myvar1.dynamicType)")print( "String(myvar2.dynamicType) -> \(myvar2.dynamicType)")print( "String(myvar3.dynamicType) -> \(myvar3.dynamicType)")print( "String(Int.self) -> \(Int.self)")print( "String((Int?).self -> \((Int?).self)")print( "String(NSString.self) -> \(NSString.self)")print( "String(Array<String>.self) -> \(Array<String>.self)")
哪个输出:
String(myvar0.dynamicType) -> __NSCFConstantStringString(myvar1.dynamicType) -> PureSwiftClassString(myvar2.dynamicType) -> IntString(myvar3.dynamicType) -> StringString(Int.self) -> IntString((Int?).self -> Optional<Int>String(NSString.self) -> NSStringString(Array<String>.self) -> Array<String>
Xcode 6.3 更新:
您可以使用_stdlib_getDemangledTypeName()
:
print( "TypeName0 = \(_stdlib_getDemangledTypeName(myvar0))")print( "TypeName1 = \(_stdlib_getDemangledTypeName(myvar1))")print( "TypeName2 = \(_stdlib_getDemangledTypeName(myvar2))")print( "TypeName3 = \(_stdlib_getDemangledTypeName(myvar3))")
并将其作为输出:
TypeName0 = NSStringTypeName1 = __lldb_expr_26.PureSwiftClassTypeName2 = Swift.IntTypeName3 = Swift.String
原答案:
在 Xcode 6.3 之前,_stdlib_getTypeName
获得了变量的重整类型名称。Ewan Swick
的博客条目有助于破译这些字符串:
eg_TtSi
代表 Swift 的内部Int
类型。
Mike Ash 有一篇很棒的博客文章,涵盖了相同的主题。
.NET(CSharp)中打印变量的内存地址
在.NET中可以使用下面代码打印出变量的内存地址
GCHandle hander = GCHandle.Alloc(device);
var pin = GCHandle.ToIntPtr(hander);
log.Debug(string.Format("Device :{0}", pin));
bash – 如何在awk中打印变量
#!/bin/bash file=tau f=2.54 order=even awk '{sum+=$2}; END {print '${file}_${f}_${order}_v1.xls',sum/NR}' ${file}_${f}_${order}_v1.xls >> safe/P-state-summary.xls
我想要所需的输出如下 –
tau_2.54_even_v1.xls sum/NR
有人可以帮我解决这个问题吗?
#!/bin/bash file=tau f=2.54 order=even awk "{sum+=\$2}; END {print \"${file}_${f}_${order}_v1.xls\",sum/NR}" \ ${file}_${f}_${order}_v1.xls >> safe/P-state-summary.xls
ios – 如何使用Swift打印Data类型变量的内容?
我要做的就是取一个字符串并获取其十六进制值.我一直关注这个 post.这是我在操场上的代码:
let str = "Say Hello to My Little Friend" let data = str.data(using: String.Encoding.utf16) print("\(data!)")
但是,我的代码只打印:
“60 bytes\n”
如何打印十六进制值?供参考,它应该是:
5361792048656c6c6f20746f204d79204c6974746c6520467269656e64
解决方法
print(data! as NSData)
PS:你期望的十六进制是.utf8
ios – 如何在Swift中使用没有类型参数的泛型类?
public class Animal<T: YummyObject> { // Code } public class Dog: Animal<Bark> { // Code } public class Cat: Animal<Meow> { // Code }
并在下面的UITableView扩展中定义了一个没有type参数的Animal属性:
extension UITableView { private static var animal: Animal! func addAnimal(animal: Animal) { UITableView.animal = animal } }
但是这样做时我得到以下编译错误:
Reference to generic type
Animal
requires arguments in<...>
.
这似乎在Java中运行良好.我怎么能在Swift中完成同样的事情呢?
解决方法
public class AnyAnimal { /* non-generic methods */ }
然后将它用作您的超类:
public class Animal<T: YummyObject>: AnyAnimal { ... }
最后,在非通用代码中使用AnyAnimal:
private static var animal: AnyAnimal!
Swift标准库中的示例.有关实际示例,请参阅KeyPath
,PartialKeyPath
和AnyKeyPath
类层次结构.它们遵循我上面概述的相同模式. Collections framework提供了更进一步的类型擦除示例,但使用了包装器.
今天关于如何在 Swift 中打印变量的类型或类?和如何在 swift 中打印变量的类型或类型数据的讲解已经结束,谢谢您的阅读,如果想了解更多关于.NET(CSharp)中打印变量的内存地址、bash – 如何在awk中打印变量、ios – 如何使用Swift打印Data类型变量的内容?、ios – 如何在Swift中使用没有类型参数的泛型类?的相关知识,请在本站搜索。
本文标签: