小编F.V*_*.V.的帖子

类型的反序列化构造函数中的每个参数必须绑定到反序列化时的对象属性或字段

我有以下简单的课程:

public abstract class GitObject
{
    public Repository Repository { get; set; }
    public abstract string Serialize();
    public abstract void Deserialize(string data);

    public class Blob : GitObject
    {
        public string Data { get; set; }

        public Blob(Repository repository, string data = null)
        {
            if (data != null) Data = File.ReadAllText(data);
            Repository = repository;
        }
        public override string Serialize()
        {
            return JsonSerializer.Serialize(this);
        }
        public override void Deserialize(string data)
        {
            Blob blobData = JsonSerializer.Deserialize<Blob>(data);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道可能还有很大的改进空间(我很高兴听到这一点)。但是,该方法Deserialize给了我错误

Each parameter …
Run Code Online (Sandbox Code Playgroud)

c# jsonserializer system.text.json

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

替代全局变量

我有一个递归函数,它反转一个整数。反转的整数不能以零开头,例如:12340 变为 4321。

res = 0
base = 1


def reverse(n):

    global res
    global base

    if n > 0:
        reverse(n // 10)
        res = res + (n % 10) * base
        base = base * 10

    return res
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但只有一次,因此我想摆脱全局变量。我想到了函数内部的辅助函数,reverse(n)但我无法让它正常工作。我已经尝试了将近一个小时,并希望最终看到解决方案。

python recursion

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

比较 2 个值并只返回索引

假设我们有 2 个元素:

x = (123, 'aab', 1)
y = (456, 'cca', 2) or y = None 
Run Code Online (Sandbox Code Playgroud)

wherex[0]=Key, x[1]=Value, x[2]=Indexy[0]=Key, y[1]=Value, y[2]=Index, wherey可能是None

Python 中是否有一种优雅的方式将Value两个元素的 与min函数进行比较并返回相应的Index?考虑到这种情况,这y可能是None. 例如

x = (123, 'aab', 1)
y = (456, 'cca', 2) 
Run Code Online (Sandbox Code Playgroud)

将返回,1因为min(123,456) = 123 因此x具有较小的值。或者

x = (123, 'aab', 1)
y = None
Run Code Online (Sandbox Code Playgroud)

也会回来 1

python

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

生成两个列表的交替值的生成器函数

乍一看,这个问题似乎非常基本且简单,但我在编写有效的解决方案时仍然遇到了一些困难。这个想法是编写一个函数,该函数将两个生成器作为输入并生成每个列表的一项。如果任一列表为空,它将生成剩余列表的每个项目。例子:

 list(alternate("abcdefg", [1, 2, 3, 4])) == ["a", 1, "b",2, "c", 3, "d", 4, "e", "f", "g"]
Run Code Online (Sandbox Code Playgroud)

什么样的工作,但看起来很丑:

def alternate(xs1, xs2):
    xs1 = iter(xs1)
    xs2 = iter(xs2)
    while xs1 and xs2:
        try:
            yield next(xs1), next(xs2)
        except StopIteration:
                for x1 in xs1:
                    yield x1
                for x2 in xs2:
                    yield x2
Run Code Online (Sandbox Code Playgroud)

特别是我想避免在一开始就将输入转换为迭代器。我尝试使用 2 个简单的 for 循环,但这显然只返回每个列表的最后一个值,因为一个 for 循环在另一个循环开始之前完成。这不是一个解决我的问题的问题,我而是在寻找一些代码来提高编写代码的技能!

python generator

0
推荐指数
1
解决办法
580
查看次数