【问题标题】:How do I print the name of the variable and not the value in Swift?如何打印变量的名称而不是 Swift 中的值?
【发布时间】:2019-12-23 21:10:47
【问题描述】:

我希望代码打印变量的名称而不是值。它只是不想工作。

我没有尝试太多,因为我不知道该怎么做。我也无法在网上找到太多关于此的文档。

import UIKit

var a = 1
var b = 2
var c = 3
var d = 4
var e = 1
var f = 2
var g = 3
var h = 4
var i = 1
var j = 2
var k = 3
var l = 4

var suggestedGroup1 = 16

var classStudents = [a,b,c,d,e,f,g,h,i,j,k,l]
var groupsNumber = 3
var peoplePerGroup = classStudents.count / groupsNumber

var totalClassPoints = a + b + c + d + e + f + g + h + i + j + k + l

var OnePerson = classStudents.randomElement()
var TwoPerson = classStudents.randomElement()
var ThreePerson = classStudents.randomElement()
var FourPerson = classStudents.randomElement()

suggestedGroup1 = OnePerson! + TwoPerson! + ThreePerson! + FourPerson!

while suggestedGroup1 != 10 {
    OnePerson = classStudents.randomElement()
    TwoPerson = classStudents.randomElement()
    ThreePerson = classStudents.randomElement()
    FourPerson = classStudents.randomElement()
    suggestedGroup1 = OnePerson! + TwoPerson! + ThreePerson! + FourPerson!

}

if suggestedGroup1 == 10 {
    print ("Group 1 is made up of", OnePerson!, ",", TwoPerson!, ",", ThreePerson!, "and", FourPerson!)
}

当它打印(“第 1 组由”、OnePerson!、“、”、TwoPerson!、“、”、ThreePerson!、“和”、FourPerson!)时,我想要这个人的名字,而不是他们的“价值”。

【问题讨论】:

  • 变量名仅在编译时有意义,在运行时它们是指针。如果您想拥有“名称”,则定义一个具有值和名称属性的结构
  • 我该怎么做?我对 swift 还很陌生。
  • 应该看这里:stackoverflow.com/questions/26005654/…。看看是否可以使用反射。

标签: arrays swift printing var


【解决方案1】:

您需要一个单独的方法,我创建了一个结构并为其指定名称和值。这是不言自明的,如果您不明白任何部分,请告诉我。

import UIKit

struct StudentClass {
    let name: String
    let value: Int
}

var a = StudentClass(name: "a", value: 1)
var b =  StudentClass(name: "b", value: 2)
var c =  StudentClass(name: "c", value: 3)
var d =  StudentClass(name: "d", value: 4)
var e =  StudentClass(name: "e", value: 1)
var f =  StudentClass(name: "f", value: 2)
var g =  StudentClass(name: "g", value: 3)
var h =  StudentClass(name: "h", value: 4)
var i =  StudentClass(name: "i", value: 1)
var j =  StudentClass(name: "j", value: 2)
var k =  StudentClass(name: "k", value: 3)
var l =  StudentClass(name: "l", value: 4)

var suggestedGroup1 = 16

var classStudents = [a,b,c,d,e,f,g,h,i,j,k,l]
var groupsNumber = 3
var peoplePerGroup = classStudents.count / groupsNumber

var totalClassPoints = a.value + b.value + c.value + d.value + e.value + f.value + g.value + h.value + i.value + j.value + k.value + l.value

var OnePerson = classStudents.randomElement()
var TwoPerson = classStudents.randomElement()
var ThreePerson = classStudents.randomElement()
var FourPerson = classStudents.randomElement()

suggestedGroup1 = OnePerson!.value + TwoPerson!.value + ThreePerson!.value + FourPerson!.value

while suggestedGroup1 != 10 {
    OnePerson = classStudents.randomElement()
    TwoPerson = classStudents.randomElement()
    ThreePerson = classStudents.randomElement()
    FourPerson = classStudents.randomElement()
    suggestedGroup1 = OnePerson!.value + TwoPerson!.value + ThreePerson!.value + FourPerson!.value

}

if suggestedGroup1 == 10 {
    print ("Group 1 is made up of", OnePerson!.name, ",", TwoPerson!.name, ",", ThreePerson!.name, "and", FourPerson!.name)
}

这是输出:-

Group 1 is made up of h , k , f and e

【讨论】:

  • StudentClass 实际上是一个结构体。只需将其命名为Student
  • 请问如何通过代码从数组中删除元素?
  • 你可以使用 Array 的方法:remove at index 例如,如果你想删除 'a',你可以通过调用:-classStudents.remove(at: 0)
  • 我建议您在此处阅读有关 Swift 集合的官方 Swift 文档:-docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html
  • 您发送的代码只有在我知道元素在哪里时才有效。如果我不知道它在哪里,我该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
相关资源
最近更新 更多