在Scala中,我可以定义结构类型如下:
type Pressable = { def press(): Unit }
这意味着我可以定义一个函数或方法,它将一个可压缩的参数作为参数,如下所示:
def foo(i: Pressable) { // etc.
我传递给这个函数的对象必须为它定义一个名为press()的方法,该方法匹配类型中定义的类型签名 - 不带参数,返回Unit(Scala的void版本).
我甚至可以使用结构类型内联:
def foo(i: { def press(): Unit }) { // etc.
它基本上允许程序员拥有鸭子类型的所有好处,同时仍然具有编译时类型检查的好处.
C#有类似的东西吗?我用谷歌搜索但找不到任何东西,但我不熟悉C#的任何深度.如果没有,有没有计划添加这个?
有人能告诉我这个班级结构是不是很糟糕吗?
class abstract Parent{
public Child Foo(){
return new Child();
}
}
class Child : Parent{}
Run Code Online (Sandbox Code Playgroud)
我听说从基类型中引用派生类型总是很糟糕并且设计不好的迹象.有人可以告诉我为什么这是坏的,甚至是坏的?
在这个项目中,您将编写一个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] = …
我有以下代码:
public VizCanvas(){
{
this.setBackground(Color.black);
this.setSize(400,400);
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,并在黑色背景下显示面板.但是当我实现不做任何操作的paint方法时,颜色会变为默认颜色,即灰色.
我试图设置graphics.setColor()但它没有帮助.
在Python中,哪种数据结构更有效/更快?假设顺序对我来说并不重要,无论如何我会检查重复项,Python设置是否比Python列表慢?
我正在使用 Java2d 开发应用程序。我注意到的奇怪的事情是,原点在左上角,正 x 向右移动,正 y 向下增加。
有没有办法移动原点左下角?
谢谢你。
我想在Web浏览器中打开一个文件(任何人都会这样做),我希望在视图源模式下而不是在标准浏览器窗口中看到它.这可以分两步完成,打开文件然后转到视图源窗口(每个浏览器中的不同快捷方式),但我想直接转到视图源窗口.我没有为Firefox和Chrome找到任何这样的命令行参数.
这是否可以使用基本浏览器功能?
最近,在一本书中我读了这段代码.您能否定义此代码的方式以及此代码的工作方式.
int i = 0;
for (; i != 10; )
{
Console.WriteLine(i);
i++;
}
Run Code Online (Sandbox Code Playgroud) 您是否了解有关HTML5和CSS3的有用资源?
更新:
我(并且我认为很多人)正在寻找实用信息如何以及在多大程度上使用这些未完成的技术.我找到了一个非常有用的资源:
我有一个函数来使用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,因此无法使用智能匹配运算符. …