首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态存储4个值的1键

如何动态存储4个值的1键
EN

Stack Overflow用户
提问于 2017-05-05 09:51:57
回答 4查看 258关注 0票数 0

在启动应用程序时,我希望保存数据集的默认数量(一个唯一的键[timestamp as int],以及4个不同的传感器值)。从那时起,在新的数据集上,每10秒,将保存在数据库中。这些数据集应添加到存储中,例如,元组列表。最后,我使用存储的数据绘制图表。

需要存储的不同值如下:

  • 时间戳:int
  • 湿度传感器:float
  • 临时工传感器:float
  • 光传感器:int
  • 按钮“传感器”:boolean

不幸的是,Unity似乎不支持带有4个值的元组。因此,此代码不起作用:

代码语言:javascript
复制
List<Tuple<int, float, float, int, boolean>> list = new List<Tuple<int, float, float, int, boolean>>();

它总是弹出一条消息,即类型Tuple需要2个类型参数。Dictionary的pro是关键值(我的时间戳),但另一方面,我也只能存储两个值(包括键)。

元组的List将是完美的,因为如果用户选择“显示最后10个值”,我们将添加一个新的数据集,并删除最老的数据集。

还有别的办法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-05 09:55:12

不要用4-5值的Tuple那样工作.很难跟踪每个Item的含义,并导致错误。创建一个自定义类:

代码语言:javascript
复制
public class SensorData
{
    public int TimeStamp { get; set; }
    public float Humidity { get; set; }
    public int Temp { get; set; }
    public int Light { get; set; }
    public bool Button { get; set; }
}

那么,如果您想要一个列表/字典:

代码语言:javascript
复制
List<SensorData> list = new List<SensorData>();
Dictionary<int, SensorData> mapping = new Dictionary<int, SensorData>();

如果您拥有的数据最初位于列表中,则可以使用.ToDictionary创建字典:

代码语言:javascript
复制
list.ToDictionary(key => key.TimeStamp); 
// Note that this will faild if you have sevetal items with the same timestamp
// If not unique then look at `.GroupBy` or `LookUp`
票数 5
EN

Stack Overflow用户

发布于 2017-05-05 09:55:58

我使用带有自定义类的Dictionary来存储传感器结果和唯一的时间戳

代码语言:javascript
复制
public class SensorResult
{
    public float Humidity { get; set; }
    public float Temp { get; set; }
    public int Light { get; set; }
    public bool Button { get; set; }
}


Dictionary<int, SensorResult> items = new Dictionary<int, SensorResult>();
票数 1
EN

Stack Overflow用户

发布于 2017-05-05 09:58:02

您可以使用类来保存键和值,并创建该类的列表,如下所示-

代码语言:javascript
复制
public class MyComponent : MonoBehaviour
{
    // Declare your serializable data
    [System.Serializable]
    public class Data {
        public int a;
        public float b;
        public float c;
        public int d;
        public bool e;
    }

    // Create list of your class type
    public List<Data> list = new List<Data>();
    ...

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43801845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档