给定两个字符串,比如hashKey和hashVal,我将这两个字符串添加到一个hash对象中。在本例中,hashVal是一个表示整数的字符串,因此我在将其存储到表中之前将其解析为整数。
现在问题来了。存储在哈希表中的值实际上是一个int32对象,这使得后面使用内部表达式很麻烦。经过长时间的查找,我无法找到一种简单的方法来存储实际的int或提取存储为int而不是int32对象的值。
下面是我尝试做的一个示例:
var myHash : HashObject;
var intTemp : int;
var hashKey : String;
var hashVal : String;
hashKey = "foobar";
hashVal = "123";
if(System.Int32.TryParse(hashVal,intTemp))
{
intTemp = int.Parse(hashVal);
myHash.Add(hashKey,hashVal);
}
// later, attempt to retrieve and use the value:
var someMath : int;
someMath = 456 + myHash["foobar"];
这将生成编译时错误:
BCE0051:运算符“+”不能与类型“int”的左手边和类型“object”的右手边一起使用。
如果尝试强制转换对象,相反,我会得到运行时错误:
InvalidCastException:无法从源类型转换为目标类型。
我知道,在使用新的int之前,我可以先将检索到的值存储在该int中,但对于我将要使用的数学量和键值对的数量来说,这将是一个非常冗长和不雅的解决方案,因此基本上否定了使用哈希表的好处。
有什么想法吗?
C# : The easiest hash solution in Unity is the HashSet:
https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx
(You have to include the System.Collections.Generic library)
Very simple usage, O(1) speed
// create - dont even worry setting the size it is dynamic, it will also do the hash function for you :)
private HashSet<string> words = new HashSet<string>();
// add- usually read from a file or in a for loop etc
words.Add(newWord);
// access via other other script such as
if (words.Contains(wordToCheck))
return true;
我不熟悉unity脚本中的“hashobject”。是否可以改用哈希表?:
var myHash: Hashtable;
function Start() {
myHash = new Hashtable();
myHash.Add("one",1);
myHash.Add("two",2);
}
function Update () {
var val = myHash["one"] + myHash["two"] + 3;
Debug.Log("val: " + val);
}
同样,在原始示例中,您将字符串值赋给哈希表,但从未使用intTemp。
为什么不在表中存储hashval
和inttemp
的元组,而不是只存储hashval
?然后您可以直接从查找中访问number值
if(System.Int32.TryParse(hashVal,intTemp)) {
intTemp = int.Parse(hashVal);
myHash.Add(hashKey, { hashValue : hashVal, intValue : intTemp });
}
var someMath : int;
someMath = 456 + myHash["foobar"].intValue;
问题内容: 我在Redis中存储MessagePacked哈希时遇到问题。我在下面粘贴了一个测试用例。从Redis中提取打包数据并对其进行解压缩时,哈希会略有损坏。当哈希值超出一定长度时,似乎会发生这种情况,尽管我不能肯定地说。 我正在使用Redis 2.4.17(默认配置),Ruby 1.9.3p194,MessagePack 0.4.7和Redis gem 3.0.2。使用节点也会发生相同的问
问题内容: 我有一个简单的问题,当我想将SHA1哈希的结果存储在MySQL数据库中时发生: 我将散列结果存储在 VARCHAR 字段中多长时间? 问题答案: 我将使用可变长度的数据,但不使用固定长度的数据。由于SHA-1值 始终为 160位长,因此将仅在固定长度字段的长度上浪费一个额外的字节。 而且我也不会存储返回的值。因为每个字符只使用4位,因此需要160/4 = 40个字符。但是,如果每个字符
问题内容: 我上AngularJS网址项目已经从改变到自上次我在我的项目工作… 在网络上找不到任何东西,有人知道这是什么吗? 问题答案: 它是AngularJS 1.6的新增功能,它添加了新的哈希前缀。 由于aa077e8,用于哈希爆炸URL 的默认哈希前缀已从空字符串()更改为爆炸()。如果您的应用程序不使用HTML5模式或正在不支持HTML5模式的浏览器上运行,并且您尚未指定自己的哈希前缀,则
问题内容: 我对Redis还是很陌生,希望看看是否有可能。想象一下我正在接收这样的数据: 并为另一个帐户接收此数据: 我想以类似的格式将这些数据保留在Redis中: 对于xyz: 所以问题是我应该使用哪种数据类型来存储此Redis? 问题答案: 如果您的目标是检查是否用作该帐户的解决方案,则解决方案应类似于: 样本数据 执行此操作( 使用redis集 ): 然后,您可以通过以下命令检查是否用作该帐
问题内容: 我想在redis中存储哈希数组,最好的编码方法是什么? 问题答案: AFAIK的唯一方法是取消引用它们。假设您有2个散列数组,例如:。 您将它们分别存储,然后创建一个引用它们全部的SET: 然后,您可以通过查询set:来检索它们全部,然后调用所有返回的键来重建原始的哈希数组。 我希望这是有道理的。而且,如果您找到了更聪明的方法,我将很高兴听到。
问题内容: 我上AngularJS网址项目已经从改变到自上次我在我的项目工作… 在网络上找不到任何东西,有人知道这是什么吗? 问题答案: 它是AngularJS 1.6的新增功能,它添加了新的哈希前缀。 由于aa077e8,用于哈希爆炸URL的默认哈希前缀已从空字符串()更改为爆炸()。如果您的应用程序不使用HTML5模式或正在不支持HTML5模式的浏览器上运行,并且您尚未指定自己的哈希前缀,则客