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

我该如何定义地图在节俭中接受其他类型的价值?

常元章
2023-03-14
问题内容

我用节俭定义了一个结构:

struct QuerySetRecord {
    1:string recordId,
    2:string crawlerName,
    3:string recordType,
    4:map<string,string> dataMap,
    5:i16 priority,
}

问题是dataMap,我不仅要接受string价值,我可能还是要接受ListMap,例如map<string, list<string>> dataMap。换句话说,我想要一个像ObjectJava object中的root这样的类型,在python中

我可以这样做吗?


问题答案:

您将必须创建自己的Object并列出其中所有可能的类。

union Object {
   1: string str;
   2: i32 number32;
}

(因为我不确定在所有lang中联合实现的工作方式,我会选择带有所有字段可选的struct)

struct Object {
   1: optional string str;
   2: optional i32 number32;
}

然后: map<string, Object>

在Thrift中,您无法创建“ accept all”字段,因为它不能完全跨语言移植,这是Thrift的主要功能之一。



 类似资料:
  • 在TypeScript中,我有一个接受带有约束的泛型参数的函数: 现在,我正在尝试这样做,以便您可以选择添加另一个类型作为返回类型的一部分。但是,当我这样做时,我必须为U类型提供一个默认参数。这使得TypeScript停止推断U的值,并使用我提供的默认类型: 所以我的问题是,有没有办法让TypeScript继续从参数推断类型?我不想为U提供默认类型,我总是希望TypeScript推断该值。伪代码,

  • 我试图实现一个接受泛型参数的函数定义,只要它扩展了另一个特定的泛型类型。简言之参数A必须扩展参数B,其中A和B都是泛型的。 下面是我的示例 用法示例如下 一些封闭的班级 和函数调用 我不想在抽象类声明中定义E,因为T已经在那里定义了。 我也试着做了以下几点: 将myList定义为接受扩展T的键 将E定义为T类型(无法找到如何指定它在函数中扩展T 但它从来都不起作用。有没有办法做到这一点?我在Sta

  • 这里我尝试访问我的handleTap()函数,它是我在另一个文件中创建的一个OBJ C函数,我需要它留在那个文件中,那么我如何从第二个ViewController访问这个函数呢? 这就是我在靠近底部的另一个文件中定义handleTap()的方式。它是一个文件名Button.swift,也许可以在SecondViewController上做一个扩展,包括handleTap(),但我不知道如何做。

  • 我有一个很大的问题,我不知道我是否错过了一些明显的东西或什么,但我不能发现我的错误。我有类SPN、A和B。我重载了2次operator=。我想将A类型或B类型作为参数传递。 它不会抛出任何错误。但是如果我在类B或A中尝试make operator(),则使用参数SPN,如下所示: 它会抛出SPN未命名类型的错误。我甚至不能在A类或B类中创建类SPN对象。也许它不是如何客观编程工作,所以我想得到它,

  • Interfaces and other types 接口与其它类型 接口 Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here. We’ve seen a couple of simple examples al

  • 约束允许将可接受类型参数的域仅限于值类型集(与包括值和引用类型的类型超集相比),但似乎也完全禁止可空类型,尽管在现代版本的C#。 如果我想接受具有附加的空性的值类型,比如