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

在Swift中访问Enumeration关联值

苏振国
2023-03-14
问题内容

在这段代码中,我编写了一个真正无用的枚举,该枚举定义了NumberInt或Float 的可能。

我无法理解如何访问通过关联设置的值。如果我尝试打印它,我得到的只是(Enum Value)

enum Number {
    case int (Int)
    case float (Float)
}

let integer = Number.int(10)
let float = Number.float(10.5)
println("integer is \(integer)")
println("float is \(float)")

问题答案:

该值与枚举的实例相关联。因此,要在不进行开关的情况下访问它,您需要使一个吸气剂并使其显式可用。如下所示:

enum Number {
    case int(Int)
    case float(Float)

    func get() -> NSNumber {
        switch self {
        case .int(let num):
            return num
        case .float(let num):
            return num
        }
    }
}

var vInteger = Number.int(10)
var vFloat = Number.float(10.5)

println(vInteger.get())
println(vFloat.get())

也许将来可能会自动创建类似的内容,或者为该语言添加更短的便利性。



 类似资料:
  • class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器。它存在于下面两种情况: ForeignKey关系的“另一边”。像这样: from django.db import models class Reporter(models.Model): # ... pass class Article(models.Model):

  • 问题内容: 我试图在Swift中访问temp目录。在Objective-C中,我可以使用以下代码进行操作: 但是,对于将类型从Objective-C转换为Swift 或从Swift转换为类型,我有些困惑 。我应该查看任何文件吗? 谢谢。 问题答案: 怎么样: 它没有回答您有关char *的问题,但它更干净… NSFileManager参考在这里。

  • 16.4. 关联已访问列表 你对使用 列表遍历 将列表关联起来的做法已经熟知。 另一种方法可以完成同样的工作:使用内建 map 函数。 它的工作机理和 filter 函数类似。 例 16.10. 介绍 map >>> def double(n): ... return n*2 ... >>> li = [1, 2, 3, 5, 9, 10, 256, -3] >>> map(d

  • Enumeration接口定义了可以枚举(一次获取一个)对象集合中的元素的方法。 此遗留接口已被Iterator取代。 虽然不推荐使用,但对于新代码,Enumeration被认为已过时。 但是,它由传统类(如Vector和Properties)定义的几种方法使用,由其他几个API类使用,目前在应用程序代码中广泛使用。 枚举声明的方法总结在下表中 - Sr.No. 方法和描述 1 boolean h

  • 问题内容: 我正在寻找一种使用Swift代码在我的应用程序中访问SQLite数据库的方法。 我知道我可以在Objective C中使用SQLite包装器并使用桥接头,但是我希望能够完全在Swift中完成此项目。如果可以的话,有没有办法做到这一点,有人可以将我指向一个引用,该引用显示了如何提交查询,检索行等。 问题答案: 虽然您可能应该使用许多SQLite包装器之一,但如果您想知道如何自己调用SQL

  • 问题内容: 我目前正在从objc.io 阅读出色的 Advanced Swift 书籍,并且遇到了一些我不理解的问题。 如果在操场上运行以下代码,您会注意到,修改词典中包含的结构时,下标访问权限会创建一个副本,但是看起来词典中的原始值已被副本替换。我不明白为什么。到底是什么情况? 另外,有没有办法避免复制?据这本书的作者说,没有,但我只是想确定一下。 问题答案: dict[“key”]?.chan