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

Swift,使用字符串名称引用变量

萧焱
2023-03-14
问题内容

计划使用字符串值来引用我要更新的变量。组合来自几个不同用户选择来源的字符串。有很多使用if / case语句的可能性。提前致谢

var d1000: Int = 0
// ...
var d1289: Int = 0
// ...
var d1999: Int = 0

var deviceIDtype: Character = "d" // button press assigns some value, d used for example
var deviceIDsection: String = "12" // button press assigns some value, 12 used for example
var deviceID: String = "89" // button press assigns some value, 89 used for example

var ref:String = ""

func devName(dIDt:Character, dIDs: String, dID: String)  -> String {      
    var combine: String = String(dIDt) + (dIDs) + (dID)
    return (combine) 
}

ref = devName(deviceIDtype, dIDs: deviceIDsection, dID: deviceID) // ref equals d1289 in this example


// d1289 = 1234 // trying to set this using the ref variable value, failed attempts below
/(ref) = 1234 // set d1289 variable to equal "1234"
"/(ref)" = 1234 // set d1289 variable to equal "1234"
get(ref) = 1234 // set d1289 variable to equal "1234"
get.ref = 1234 // set d1289 variable to equal "1234"

问题答案:

如何使用字典[String : Int]

这将使您实现所需的功能-存储不同键的值。

例如,代替使用

var d1000 = 0
var d1289 = 0
var d1999 = 0

你可以用

var dictionary: [String : Int] = [
  "d1000" : 0,
  "d1289" : 0,
  "d1999" : 0
]

要将值存储在字典中,只需使用

dictionary[key] = value
//for example, setting "d1289" to 1234
dictionary["d1289"] = 1234

并从字典中获取值,请使用

let value = dictionary[key]
//for example, getting the value of "d1289"
let value = dictionary["d1289"]

所以,你可以使用这样的东西

//initialize your dictionary
var myDictionary: [String : Int] = [:]

//your key initialization data
var deviceIDtype: Character = "d"
var deviceIDsection: String = "12"
var deviceID: String = "89"
var ref: String = ""

//your code
func devName(/*...*/){/*...*/}
ref = devName(/*...*/)

//set the key ref (fetched from devName) to 1234
myDictionary[ref] = 1234

顺便提一句,您可以真正清理一些代码

func devName(type: Character, section: String, id: String) -> String{      
    return String(type) + section + id
}

//...

let key = devName(deviceIDtype, section: deviceIDsection, id: deviceID)
let value = 1234
myDictionary[key] = value


 类似资料:
  • 问题内容: 有没有办法使用包含其名称的字符串来引用Javascript变量? 例: 问题答案: 您可以使用an 做到这一点,尽管我会尽一切努力避免这种事情。 如果您发现自己需要这样做,一种更好的方法是使用哈希表。

  • 问题内容: 因此,我试图在Swift中将“实际变量名称”获取为String,但是还没有找到一种方法…或者也许我正以一个不好的角度看待这个问题和解决方案。 所以这基本上是我想要做的: 不幸的是,我无法在苹果文档中找到任何与之接近的东西,但这是: 但是,这给出了变量本身或变量类型的信息,在这种情况下为字符串,我想要变量的实际名称。 问题答案: 根据更新,它在Swift 3中通过

  • 我有一个应用程序正在从jooq切换到jdbc,我使用jdbc创建了一个表,但我需要编辑一些jooq查询来加入它,问题是自动生成的jooq tables类无法识别它,所以有没有办法通过字符串名引用表? 下面是一些示例代码: 我如何在此处加入“连接”表?没有桌子。连接,因为它是以不同的方式创建的。 有很多疑问,所以我们希望根据需要逐步进行转换。 更新:我尝试添加以下内容,并且查询运行,但是我尝试获取的

  • 问题内容: 我有一个分配了字符串的变量,我想根据该字符串定义一个新变量。 问题答案: 你可以使用exec:

  • 问题内容: 我的变量在其中具有递增的数字,例如row0text,row1text,row2text等。 我已经找到了如何动态创建这些变量名的字符串版本的方法,但是一旦有了这些字符串,如何将它们用作实际的变量名而不是代码中的字符串? 例: 一旦知道如何执行此操作,就可以使用for循环遍历这些变量;只是目前我不确定如何在我的代码中将该字符串用作变量名。 谢谢! 问题答案: 简短的回答: 没有 充分的理

  • 我习惯于在JavaScript中这样做: 斯威夫特没有这个功能,怎么做类似的东西?