是否有办法从KeySym值中获取字符串值?例如,在keyPrintable("a")
中。
如果您知道KeySym
值为keyPrintable
,则只需使用key
属性即可获取它。例如
KeySym kv = ... // something that yields a KeySym
str s = kv.key;
如果您不知道它是keyPrintable
,则可以检查它是否使用该构造函数构建,也可以使用模式匹配。因此,要么
if (kv is keyPrintable) {
// code that uses kv.key to get back the value
}
或
if (keyPrintable(str s) := kv) {
// code that can now use s, which is the key
}
您也可以询问kv是否具有该字段,然后使用它:
if (kv has key) {
// code that uses kv.key
}
一旦在构造函数中引入了字段名称,并且它具有特定的类型,就会知道在相同数据类型的任何其他构造函数中,相同的字段名称具有相同的类型。因此,一旦我们知道字段key
是类型str
,则字段key
必须是str
,且类型为KeySym
。这就是为什么可以很好地查看kv
是否具有字段key
,然后将其视为str
的原因,以后没有人再来为KeySym
添加新的构造函数,其中key
具有不同的类型。] >