当前位置: 首页 > 面试题库 >

如何找出对象的类型(在Swift中)?

司徒鸿文
2023-03-14
问题内容

当试图理解一个程序时,或者在某些极端情况下,能够真正找出某种类型的东西很有用。我知道调试器可以向您显示一些类型信息,并且您通常可以依靠类型推断来避免在那种情况下不指定类型,但是我仍然很想拥有类似Python的东西type()

更新: 在Swift的最新版本中对此进行了更改,obj.dynamicType现在为您提供了对类型的引用,而不是动态类型的实例。

这似乎是最有前途的,但到目前为止我还无法找出实际的类型

class MyClass {
    var count = 0
}

let mc = MyClass()

# update: this now evaluates as true
mc.dynamicType === MyClass.self

我还尝试使用类引用实例化一个 确实 有效的新对象,但奇怪地给我一个错误,说我必须添加一个required初始化程序:

作品:

class MyClass {
    var count = 0
    required init() {
    }
}

let myClass2 = MyClass.self
let mc2 = MyClass2()

尽管实际上只是发现任何给定对象类型的一小步

编辑 :我已经删除了大量现在不相关的细节-如果您有兴趣,请查看编辑历史记录:)


问题答案:

Swift 3版本:

type(of: yourObject)


 类似资料:
  • 问题内容: 如何在Go中找到对象的类型?在Python中,我只是用来获取对象的类型。类似地,在Go中,是否有实现相同方法的方法? 这是我要迭代的容器: 在这种情况下,我无法获取对象行的类型,这是字符串数组。 问题答案: Go反射包提供了检查变量类型的方法。 以下代码段将打印出字符串,整数和浮点数的反射类型。 输出: 请参阅:http : //play.golang.org/p/XQMcUVsOja

  • 我似乎找不到在Swift中返回对象类型的函数或方法。 如何在Swift中检索对象的类型或类? 我尝试使用Obj-C类,但显然不起作用。 在python中,有或 在Javascript中有

  • 我无法获得对象行的类型,在本例中,这是一个字符串数组。

  • 问题内容: 我有一个异构列表,可以包含任何类型的对象。我需要找到某种类型的List元素。浏览其他与泛型相关的问题的答案时,我没有找到我真正需要的东西。 这是我要完成的工作的一个示例: 那么,如何定义泛型?我在这里收集到类型擦除会导致问题的信息,我对此可能不太了解,但是我宁愿不定义多个“查找”方法,因为List中可能存在许多不同类型的对象。 问题答案: 您可以使用[ ](http://java.su

  • 问题内容: 基本上我想这样做: 我试过了: 而且没有用。 另外,其他类型呢?例如,我无法复制。 问题答案: 就您而言,将返回。 您可能还需要阅读以下内容:http : //www.canonical.org/~kragen/isinstance/

  • 问题内容: 假设我有一个对象数组。并且对象具有属性。除了逐一读取对象并逐一比较值之外,是否还有其他捷径可做?谢谢。 问题答案: 您可以简单地将用户数组映射到用户年龄数组和查找最大年龄数组: