问题列表 - 第26834页

C#是否与Scala的结构类型相当?

在Scala中,我可以定义结构类型如下:

type Pressable = { def press(): Unit }

这意味着我可以定义一个函数或方法,它将一个可压缩的参数作为参数,如下所示:

def foo(i: Pressable) { // etc.

我传递给这个函数的对象必须为它定义一个名为press()的方法,该方法匹配类型中定义的类型签名 - 不带参数,返回Unit(Scala的void版本).

我甚至可以使用结构类型内联:

def foo(i: { def press(): Unit }) { // etc.

它基本上允许程序员拥有鸭子类型的所有好处,同时仍然具有编译时类型检查的好处.

C#有类似的东西吗?我用谷歌搜索但找不到任何东西,但我不熟悉C#的任何深度.如果没有,有没有计划添加这个?

c# type-systems scala duck-typing structural-typing

18
推荐指数
3
解决办法
2012
查看次数

这是不好的面向对象设计?(基类中使用的派生类)

有人能告诉我这个班级结构是不是很糟糕吗?

class abstract Parent{
  public Child Foo(){
    return new Child();
  }
}

class Child : Parent{}
Run Code Online (Sandbox Code Playgroud)

我听说从基类型中引用派生类型总是很糟糕并且设计不好的迹象.有人可以告诉我为什么这是坏的,甚至是坏的?

language-agnostic oop

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

Prime编号的Java程序

问题

在这个项目中,您将编写一个Java程序,从标准输入读取正整数n,然后打印出前n个素数.我们说如果存在整数k使得m = kd,即如果d均匀地划分为m,则整数m可被非零整数d整除.等价地,如果m(整数)除以d的余数为零,则m可被d整除.我们也会通过说d是m的除数来表达这一点.如果正整数p的唯一正除数为1且p为正整数p,则称为素数.该规则的一个例外是数字1本身,它被认为是非素数.非素数的正整数称为复合.欧几里德表明,有无数的素数.素数和复合序列开始如下:

Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, … 

Composites: 1, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, … 
Run Code Online (Sandbox Code Playgroud)

有许多方法可以测试数字的素数,但最简单的方法就是简单地进行试验.首先将m除以2,如果它均匀分配,则m不是素数.否则,除以3,然后是4,然后是5,等等.如果在任何点发现m可以被2 dm-1范围内的数d整除,则停止,并得出结论m是复合的.否则,得出m是素数的结论.片刻的想法表明,人们不需要通过数字d进行任何试验划分,数字d本身是复合的.例如,如果试验除以2失败(即具有非零余数,因此m为奇数),则试验除以4,6或8或任何偶数也必须失败.因此,为了测试数字m的素数,只需要通过小于m的素数进行试验除法.此外,没有必要一直到m-1.人们只需要在下午2点范围内通过质数p进行m的试验分割.为了看到这一点,假设m> 1是复合的.然后存在正整数a和b,使得1 <a <m,1 <b <m,并且m = ab.但如果a> m和b> m,则ab> m,与m = ab相矛盾.因此,a或b中的一个必须小于或等于m.

要在java中实现此过程,您将编写一个名为isPrime()的函数,其函数具有以下签名:

static boolean isPrime(int m, int[] P) 
Run Code Online (Sandbox Code Playgroud)

根据m是素数还是复合函数,此函数将返回true或false.数组参数P将包含足够数量的素数来进行测试.具体来说,在调用isPrime()时,数组P必须包含(至少)2 pm范围内的所有素数p.例如,要测试m = 53的素数,必须按2,3,5和7进行连续的试验除法.自11> 53以来我们不再进一步.因此函数调用isPrime(53,P)的前提条件是P [0] = 2,P [1] = 3,P [2] = 5,P [3] = 7.在这种情况下返回值是真的,因为所有这些划分都失败了.与测试m = 143类似,必须通过2,3,5,7和11(从13> 143)进行试验分割.函数调用的前提条件是Preme(143,P)因此P [0] = …

java primes

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

Java2d:JPanel设置背景颜色不起作用

我有以下代码:

public VizCanvas(){
    {
        this.setBackground(Color.black);
        this.setSize(400,400);
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,并在黑色背景下显示面板.但是当我实现不做任何操作的paint方法时,颜色会变为默认颜色,即灰色.

我试图设置graphics.setColor()但它没有帮助.

java graphics java-2d

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

Python集与列表

在Python中,哪种数据结构更有效/更快?假设顺序对我来说并不重要,无论如何我会检查重复项,Python设置是否比Python列表慢?

python performance list set data-structures

168
推荐指数
6
解决办法
12万
查看次数

Java2d:平移轴

我正在使用 Java2d 开发应用程序。我注意到的奇怪的事情是,原点在左上角,正 x 向右移动,正 y 向下增加。

有没有办法移动原点左下角?

谢谢你。

java graphics java-2d

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

如何在查看源模式下启动浏览器?

我想在Web浏览器中打开一个文件(任何人都会这样做),我希望在视图源模式下而不是在标准浏览器窗口中看到它.这可以分两步完成,打开文件然后转到视图源窗口(每个浏览器中的不同快捷方式),但我想直接转到视图源窗口.我没有为Firefox和Chrome找到任何这样的命令行参数.

这是否可以使用基本浏览器功能?

html browser

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

这个循环如何在c#中工作

最近,在一本书中我读了这段代码.您能否定义此代码的方式以及此代码的工作方式.

int i = 0; 
for (; i != 10; ) 
{ 
    Console.WriteLine(i); 
    i++; 
}
Run Code Online (Sandbox Code Playgroud)

.net c#

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

在Web浏览器中支持HTML5和CSS3的最佳指南是什么?

您是否了解有关HTML5和CSS3的有用资源?

更新:

我(并且我认为很多人)正在寻找实用信息如何以及在多大程度上使用这些未完成的技术.我找到了一个非常有用的资源:

http://caniuse.com/

html5 css3

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

搜索对象数组,以使用不同的比较运算符匹配可能的多个值

我有一个函数来使用eq运算符搜索对象数组中的匹配值,如下所示:

sub find {
    my ( $self, %params ) = @_;
    my @entries = @{ $self->{_entries} };

    if ( $params{filename} ) {
        @entries = grep { $_->filename eq $params{filename} } @entries;
    }
    if ( $params{date} ) {
        @entries = grep { $_->date eq $params{date} } @entries;
    }
    if ( $params{title} ) {
        @entries = grep { $_->title eq $params{title} } @entries;
    }
    ....
Run Code Online (Sandbox Code Playgroud)

我希望能够传入一个qr引用变量来代替比较,但是我能想到分离比较的唯一方法是使用if/else块,如下所示:

if (lc ref($params{whatever}) eq 'regexp') {
    #use =~
} else {
    #use eq
}
Run Code Online (Sandbox Code Playgroud)

这样做的时间更短吗?由于我无法控制的原因,我使用的是Perl 5.8.8,因此无法使用智能匹配运算符. …

arrays perl comparison search operators

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