小编dev*_*ium的帖子

是否值得在C#中使用方法链接?

在C#中使用Collection初始化器并允许在不必调用构造函数的情况下定义类的属性,在C#中使用Method Chaining有什么意义吗?我什么也看不见.也许我在这里遗漏了什么?

谢谢

c# method-chaining

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

具有约束层次结构的泛型

我目前面临一个非常令人不安的问题:

interface IStateSpace<Position, Value>
where Position : IPosition           // <-- Problem starts here
where Value : IValue                 // <-- and here as I don't
{                                    //     know how to get away this
                                     //     circular dependency!
                                     //     Notice how I should be
                                     //     defining generics parameters
                                     //     here but I can't!
    Value GetStateAt(Position position);
    void SetStateAt(Position position, State state);
}
Run Code Online (Sandbox Code Playgroud)

正如你到这里,既IPosition,IValueIState互相依赖.我怎么能逃脱这个?我想不出任何其他设计会绕过这种循环依赖,仍然准确描述我想要做的事情!

interface IState<StateSpace, Value>
where StateSpace : IStateSpace        //problem
where Value : IValue                  //problem
{ …
Run Code Online (Sandbox Code Playgroud)

c# oop generics circular-dependency

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

struct的构造函数问题(编译器大喊我没有完全初始化所有struct的自动属性)

我有以下一点代码:

public struct Interval
{
    public double Min { get; set; }
    public double Max { get; set; }

    public Interval(double min = double.MinValue, double max = double.MaxValue)
    {
        Min = min;
        Max = max;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨说

在将控制权返回给调用者之前,必须完全分配自动实现的属性的备份字段.考虑从构造函数初始化程序中调用默认构造函数.

这是我不理解的,因为我的构造函数正在完全初始化此结构的值.不是吗?

.net c# automatic-properties

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

了解C中的分叉

我在理解以下简单的C代码时遇到了一些麻烦:

int main(int argc, char *argv[]) {
    int n=0;
    fork();
    n++;
    printf("hello: %d\n", n);
}
Run Code Online (Sandbox Code Playgroud)

我目前对a的理解fork是,从该代码行开始,它将把剩下的代码分成2,它将并行运行,直到"没有更多代码"执行.

从那个棱镜,fork之后的代码将是:

一个)

    n++;                       //sets n = 1
    printf("hello: %d\n", n);  //prints "hello: 1"
Run Code Online (Sandbox Code Playgroud)

b)

    n++;                       //sets n = 2
    printf("hello: %d\n", n);  //prints "hello: 2"
Run Code Online (Sandbox Code Playgroud)

然而,会发生的是两个印刷品

hello: 1
Run Code Online (Sandbox Code Playgroud)

这是为什么?

编辑:只是现在它发现,与线程相反,进程不共享相同的内存.是对的吗?如果是,那就是原因.

c unix fork

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

使用foldl在haskell中添加数字的幂

我被要求制作一个计算类似东西的haskell函数

1^2 + 2^2 + 3^2 ...
Run Code Online (Sandbox Code Playgroud)

虽然我发现使用列表推导很容易实现

sum [ k^2 | k <- [1..100]]
Run Code Online (Sandbox Code Playgroud)

或地图

sum (map (\x -> x*x) [1..100])
Run Code Online (Sandbox Code Playgroud)

我很难获得如何用折叠来实现它.

如果我没有错,那么在递归函数中需要不少于3个参数来实现以下结果:

  1. 当前位置(1 ...到n)
  2. 目前的总和
  3. 在哪里停下来

即使我定义了这个函数,它仍然会返回一个元组,而不是一个数字(就像我需要它!).

有人能够给我一些关于我可能遗失的线索吗?

谢谢

haskell functional-programming

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

在计算查询中的行数时,我应该使用count(*)还是count(a,b,c ..,z)?

我应该使用select count(*) from XXXselect count(a, b, c.., z) from XXX

在计算查询中的行数时,哪一行更快(如果它们有任何差异)?

sql database oracle

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

在haskell中同时迭代2个列表(不使用zip)

我有2个清单:

[[1,2],[4,5]]
Run Code Online (Sandbox Code Playgroud)

[0, 3]
Run Code Online (Sandbox Code Playgroud)

而且我想把它变成

[[0,1,2],[3,4,5]]
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个功能:

myFun xxs xs = map (\x -> (fst x):(snd x)) (zip xs xxs)
Run Code Online (Sandbox Code Playgroud)

它的工作原理.但我仍然想知道是否有更好的方法可以在不使用拉链的情况下实现这一目标.有没有?

基本上我想要做的就是同时沿着2个列表迭代,这是我无法想到在Haskell中不用求助于拉链的方法.

谢谢

haskell functional-programming

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

strchr的问题

我无法理解为什么下面的C代码不起作用:

int obtainStringLength(char* str, char c1, char c2) {
    char* firstOcurrence = strchr(str, c1);
    char* endOcurrence = strchr(str, c2);
    return 2+(endOcurrence - firstOcurrence) / sizeof(char*);
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是找到c1和之间有多少个字符c2:

printf("%d\n", obtainStringLength("abc def ghi", 'a', 'i')); //should yield 11
Run Code Online (Sandbox Code Playgroud)

不幸的是,这总是打印1.问题是什么?不应该strchr像C#一样工作string.IndexOf()吗?

c pointer-arithmetic

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

如何正确处理查询约束中的日期

我目前正在使用以下查询来完成2010年6月完成的所有检查:

select inspections.name
from inspections
where
  to_char(inspections.insp_date, 'YYYY') = 2010 and
  to_char(inspections.insp_date, 'MM') = 06;
Run Code Online (Sandbox Code Playgroud)

但这感觉有点尴尬.难道不会有更好的方法吗?看看http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html似乎并非如此.我正在使用Oracle,如果它有所作为.

谢谢

sql database oracle constraints

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

具有许多需要在其他类中生成的类的项目中的依赖注入

我正在开发一种从语言A到B的翻译器(是的,它有点像编译器).翻译通常来自几个不同的文件,每个文件都有相同的3个部分进行翻译.所以,我这样做的方式,我有以下方式:

在此输入图像描述

当我实例化一个翻译器并给它一些数据时,它需要生成所有需要的FileTranslator类.因为我不应该new在翻译中做,我应该从上面要求一个工厂.Sections译员也是如此.这就产生了一个问题,即我不得不创建许多样板工厂.此外,每个翻译人员可能需要更多的工厂来生成他们可能想要使用的其他类.

我认为这是错误的方式还是它的方式?我不允许在这个项目中使用任何类型的DI/IoC框架,顺便说一下.

编辑:

我担心我没有收到我的消息.

在这种特定情况下,由于我的Translator类需要能够随时生成一些FileTranslator,因此需要FileTranslatorFactory.我知道我可以让一个IoC容器为我做接线,但IoC容器本身不会因为必须编写FileTranslatorFactory本身代码的问题而省去我.我对吗?

现在,问题在于FileTranslator还必须能够在需要SectionATranslators,SectionBTranslators和SectionCTranslators时生成(并且不认为它们是相似的,因为它们的名称是 - 它们完全不同并且与每个都无关其他!).所以我必须为每一个定义工厂.所以对于这样一个简单的5类系统,我需要创建4个(!!!)工厂.

因为我不希望我的域对象依赖于IoC-Container而且我不想为所有似乎需要的4种对象都有一个工厂,我还缺少一些东西吗?

c# java oop factory dependency-injection

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