标签: data-class

有没有办法从常规Kotlin类中识别Kotlin数据类?

有没有办法从常规Kotlin类中识别Kotlin数据类?喜欢使用反射可能吗?

reflection metaprogramming kotlin data-class

14
推荐指数
2
解决办法
1242
查看次数

Kotlin 数据类是否默认可序列化?

了解 Kotlin 后,爱上了data class. 我可以替换具有equalandhashtoStringto 它的Java 类。这些 Java 类中的大多数都是serializable类。所以我的问题是,当我们转换为 时data class,我还需要serializable明确地进行吗?喜欢

data class SomeJavaToKotlinClass(val member: String) : Serializable
Run Code Online (Sandbox Code Playgroud)

或者没关系

data class SomeJavaToKotlinClass(val member: String)
Run Code Online (Sandbox Code Playgroud)

serialization kotlin data-class

13
推荐指数
2
解决办法
1万
查看次数

Kotlin数据类:如果在编译时我不知道它的名字,如何读取属性的值?

如果属性名称仅在运行时已知,我如何读取Kotlin数据类实例中的属性值?

kotlin data-class

12
推荐指数
3
解决办法
1万
查看次数

Kotlin:密封类不能"包含"数据类?为什么?

好了,现在科特林正式出来,我开始再次发挥它,我很困惑,我需要的优点之间进行选择sealed,并data以某种方式,但不能兼得.

例如,这似乎对我有意义,但不编译:

sealed class Expr {
    data class Const(val number: Double) : Expr()
    data class Sum(val expr1 : Expr, val expr2 : Expr) : Expr()
}
Run Code Online (Sandbox Code Playgroud)

因为数据类不能扩展其他类.

有什么我想念的吗?

kotlin data-class

11
推荐指数
1
解决办法
1737
查看次数

如何让 python 数据类继承 __hash__?

以下将起作用,但我宁愿不需要__hash__在每个子类中重复。有没有办法告诉数据类继承哈希函数(即不将其设置为None)?

from dataclasses import dataclass


@dataclass
class Hashable:

    def __hash__(self):
        hashed = hash((
            getattr(self, key)
            for key in self.__annotations__
            ))
        return hashed


@dataclass
class Node(Hashable):
    name: str = 'Undefined'

    def __hash__(self):
        return Hashable.__hash__(self)
Run Code Online (Sandbox Code Playgroud)

python hash data-class

11
推荐指数
1
解决办法
2139
查看次数

表单的视图数据应该是类的实例...但是是一个(n)字符串

我目前收到以下错误:

"表单的视图数据应该是Symfony\Component\HttpFoundation\File\File类的实例,但是是一个(n)字符串.您可以通过将"data_class"选项设置为null或添加视图来避免此错误将(n)字符串转换为Symfony\Component\HttpFoundation\File\File的实例的转换器."

SoundController - 上传功能

 /**
 * @Security("is_granted('IS_AUTHENTICATED_FULLY')")
 * @Route("/song/upload", name="upload_song")
 * @param Request $request
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function uploadSong(Request $request)
{
    $song = new Sound();

    $form = $this->createForm(SoundType::class, $song);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid())
    {
        $file = $song->getFile();
        $user = $this->getUser();

        $fileName = $this
            ->get('app.file_uploader')
            ->setDir($this->get('kernel')->getRootDir()."/../web".$this->getParameter('songs_directory'))
            ->upload($file);

        $song->setFile($fileName);

        $file = $song->getCoverFile();
        if ($file === null)
        {
            $song->setCoverFile($this->getParameter('default_cover'));
        }
        else
        {
            $fileName = $this
                ->get('app.file_uploader')
                ->setDir($this->get('kernel')->getRootDir()."/../web".$this->getParameter('covers_directory'))
                ->upload($file);

            $song->setCoverFile($fileName);
        }

        $song->setUploader($user);
        $song->setUploaderID($user->getId());
        $user->addSong($song);

        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($song);
        $entityManager->flush();

        return …
Run Code Online (Sandbox Code Playgroud)

php symfony data-class

10
推荐指数
1
解决办法
1万
查看次数

如何更新实现通用接口的数据类

我正在努力处理数据类和多态.我想从不变性中受益,但仍然能够更新我的状态.为此,我希望能够使用该copy功能.

我们举个例子吧.我有这个类层次结构:

interface Aging {
  val age : Int
}

data class Cheese (
  override val age : Int
  // more Cheese specific properties
) : Aging

data class Wine (
  override val age : Int,
  val grape : String
  // more Wine specific properties
) : Aging   
Run Code Online (Sandbox Code Playgroud)

现在我希望能够做这样的事情(但是不工作):

class RipeningProcess(){
  fun ripen(products : List<Aging>) =
    // Not possibe, no copy function on Aging
    products.map { it.copy(age = it.age + 1) } 
}
Run Code Online (Sandbox Code Playgroud)

如何以多态方式创建更新的副本?

我试图给接口一个copy …

kotlin data-class

9
推荐指数
1
解决办法
1184
查看次数

在 kotlin 中从 GSON 生成对象时不会调用数据类 init 函数

我正在使用Gsson转换JSON to Kotlin data class. 在创建数据类对象时,我想解析init方法中的值。但init从未调用和生成的对象的值为空。

data class Configuration (val groupId:Int, val key:String, val source:String){
    val query:String
    val search:String
    init {
        val obj = JSONObject(key)
        query = obj.getString("q")
        search = obj.getString("search")
    }
}
Run Code Online (Sandbox Code Playgroud)

当我配置的从对象Gsonquerysearch值始终nullinit永远不会执行块。我也试过 constructor 没有data关键字,结果是一样的。

kotlin data-class

9
推荐指数
1
解决办法
2445
查看次数

有没有办法在数据类构造时转换属性的值?

在创建数据类时,我经常发现我想要转换其中一个属性,通常是将其标准化或制作防御性副本.例如,在这里我想productCode永远是小写的:

data class Product(val productCode: String)
Run Code Online (Sandbox Code Playgroud)

我已经尝试添加一个init块,希望Kotlin足够聪明,让我手动处理构造函数参数赋值给属性:

data class Product(val productCode: String) {
    init {
        this.productCode = productCode.toLowerCase()
    }
}
Run Code Online (Sandbox Code Playgroud)

但它将此视为重新分配.

我宁愿不用手写equals/ hashCode/ toString/ copyIDE生成的方法也不是真的好多了.

有没有办法转换数据类中的构造函数参数?

kotlin data-class

8
推荐指数
1
解决办法
485
查看次数

我应该如何在 Marshmallow Python 中添加包含字典列表的字段?

Marshmallow为了让你可以使用列表字段:

include_in = fields.List(cls_or_instance=fields.Str(),
                         default=['sample1', 'sample2'])
Run Code Online (Sandbox Code Playgroud)

这没问题,但我有一个新要求,即在一个领域有一个字典列表。示例有效负载:

[{
  "name": "Ali",
  "age": 20
},
{
  "name": "Hasan",
  "age": 32
}]
Run Code Online (Sandbox Code Playgroud)

This payload is part of the bigger schema, so now the question is how should I add and validate such a field?


EDIT-1: I went a step further and could find out that there is a Dict field type in Marshmallow so until now I have the below code sample:

fields.List(fields.Dict(
        keys=fields.String(validate=OneOf(('name', 'age'))),
        values=fields.String(required=True)
))
Run Code Online (Sandbox Code Playgroud)

Now new problem arise …

python nested marshmallow data-class

8
推荐指数
1
解决办法
5771
查看次数