【问题标题】:Casting a variable of generic data type to String in Swift在 Swift 中将泛型数据类型的变量转换为 String
【发布时间】:2019-06-11 01:23:17
【问题描述】:

我有一个泛型类,其中包含一个泛型数据类型的变量。我需要将此变量转换为字符串。

示例代码 -

class test<T> {
var value:T!
var name: String!

  init(text: String, val: T)
  {
    name = text
    value = val
  }

  func toString() -> String {
    let temp = value as! String
    //let temp = String(value)
    return name + ": " + temp 
  }
}

我尝试通过 let temp = value as 来向下转换它! String 但会导致运行时崩溃

执行let temp = String(value) 抛出无法调用类型为“String”的初始化程序,其参数列表为“(T?)”类型的构建错误

【问题讨论】:

  • 如果你将 T 指定为 String 就不会发生崩溃,你能显示测试的创建吗?
  • 在我的情况下,T 将是 Int 或 Float

标签: swift generics type-conversion


【解决方案1】:

您可以使用字符串插值将value 包含在字符串中。

class Test<T> {
    var value:T
    var name: String

    init(text: String, val: T) {
        name = text
        value = val
    }

    func toString() -> String {
        return "\(name): \(value)"
    }
}

与您的问题无关,但不要将您的任何变量声明为隐式展开的 Optionals(在它们的类型之后使用!),尤其是当您在初始化程序中设置它们时。您还应该遵守 Swift 命名约定,即类型的 UpperCamelCase (Test)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    相关资源
    最近更新 更多