小编Bak*_*riu的帖子

ArrayList的contains()方法如何评估对象?

假设我创建了一个对象并将其添加到我的对象中ArrayList.如果我然后使用完全相同的构造函数输入创建另一个对象,那么该contains()方法是否会将两个对象评估为相同?假设构造函数对输入没有做任何有趣的事情,并且存储在两个对象中的变量是相同的.

ArrayList<Thing> basket = new ArrayList<Thing>();  
Thing thing = new Thing(100);  
basket.add(thing);  
Thing another = new Thing(100);  
basket.contains(another); // true or false?
Run Code Online (Sandbox Code Playgroud)
class Thing {  
    public int value;  

    public Thing (int x) {
        value = x;
    }

    equals (Thing x) {
        if (x.value == value) return true;
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是class应该如何实现contains()回归true

java evaluation arraylist object

292
推荐指数
7
解决办法
53万
查看次数

array [100] = {0}如何将整个数组设置为0?

编译器如何填充值char array[100] = {0};?它背后的魔力是什么?

我想知道内部编译器如何初始化.

c c++ compiler-construction

140
推荐指数
4
解决办法
23万
查看次数

接口实现中静态变量的含义是什么?

在接口的实现中定义时,我不太了解静态变量.在方法中,我确实理解它们与局部变量的区别,但不是直接在实现中定义的.

看看这些例子.这两者实际上有什么区别?

#include "MyClass.h"

@implementation MyClass
int myInt;
...
@end
Run Code Online (Sandbox Code Playgroud)

和:

#include "MyClass.h"

@implementation MyClass
static int myInt;
...
@end
Run Code Online (Sandbox Code Playgroud)

myInt在两种情况下,所有方法都可以看到,如果我解释了一个正确运行的测试,那么myInt在这两种情况下,对于不同类的实例,它们都是相同的变量.

variables static objective-c static-variables

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

Python列表的基础数据结构是什么?

用于实现Python内置列表数据类型的典型底层数据结构是什么?

python list data-structures

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

什么是单态限制?

令我感到困惑的是,haskell编译器有时会推断出比我预期的更不易变形的类型,例如在使用无点定义时.

似乎问题是"单态限制",默认情况下在旧版本的编译器上启用.

考虑以下haskell程序:

{-# LANGUAGE MonomorphismRestriction #-}

import Data.List(sortBy)

plus = (+)
plus' x = (+ x)

sort = sortBy compare

main = do
  print $ plus' 1.0 2.0
  print $ plus 1.0 2.0
  print $ sort [3, 1, 2]
Run Code Online (Sandbox Code Playgroud)

如果我编译它,ghc我没有获得错误,可执行文件的输出是:

3.0
3.0
[1,2,3]
Run Code Online (Sandbox Code Playgroud)

如果我将main身体改为:

main = do
  print $ plus' 1.0 2.0
  print $ plus (1 :: Int) 2
  print $ sort [3, 1, 2]
Run Code Online (Sandbox Code Playgroud)

我没有编译时错误,输出变为:

3.0
3
[1,2,3]
Run Code Online (Sandbox Code Playgroud)

正如所料.但是,如果我尝试将其更改为:

main = do
  print $ …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell types type-inference monomorphism-restriction

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

char保证恰好是8位长吗?

就这样.没有找到任何类似的话题所以请耐心等待.

c types char

59
推荐指数
5
解决办法
7万
查看次数

Java泛型:为什么这个输出可能?

我有这门课:

class MyClass<N extends Number> {
    N n = (N) (new Integer(8));
}
Run Code Online (Sandbox Code Playgroud)

我想得到这些输出:

System.out.println(new MyClass<Long>().n);
System.out.println(new MyClass<Long>().n.getClass());
Run Code Online (Sandbox Code Playgroud)
  1. 第一项System.out.println()陈述的输出:

    8
    
    Run Code Online (Sandbox Code Playgroud)
  2. 输出第二个System.out.println()陈述:

    java.lang.ClassCastException: java.lang.Integer (in module: java.base)
        cannot be cast to java.lang.Long (in module: java.base)
    
    Run Code Online (Sandbox Code Playgroud)

为什么我得到第一个输出?是不是也有演员?为什么我在第二个输出中得到异常?

PS:我使用的是Java 9; 我用JShell尝试了它,我在两个输出上都有一个例外.然后我尝试使用IntelliJ IDE并获得第一个输出,但第二个输出异常.

java generics intellij-idea jshell

51
推荐指数
2
解决办法
2725
查看次数

如何正确使用__setattr__,避免无限递归

我想定义一个包含readwrite方法的类,可以按如下方式调用:

instance.read
instance.write
instance.device.read
instance.device.write
Run Code Online (Sandbox Code Playgroud)

为了不使用隔行扫描类,我的想法是覆盖__getattr____setattr__方法并检查,如果给定的名称是device将返回重定向到self.但是我遇到了一个无限递归的问题.示例代码如下:

class MyTest(object):
    def __init__(self, x):
        self.x = x

    def __setattr__(self, name, value):
        if name=="device":
            print "device test"
        else:
            setattr(self, name, value)

test = MyTest(1)
Run Code Online (Sandbox Code Playgroud)

如在__init__代码中尝试创建一个新属性x,它会调用__setattr__,再次调用__setattr__,依此类推.我怎么需要更改此代码,即,在这种情况下,一个新的属性xself创建,持有的价值1

或者有没有更好的方法来处理像instance.device.read'映射'的调用instance.read

因为总是存在关于原因的问题:我需要创建xmlrpc调用的抽象,为此myxmlrpc.instance,device.read可以创建非常简单的类似方法.我需要'模拟'这样来模仿这样的多点方法调用.

python setattr getattr python-2.7

47
推荐指数
3
解决办法
4万
查看次数

在AppDelegate中使用background/foreground方法

我打算在我的应用程序中实现多任务.我在这里可以看到很多的方法来做到这一点的AppDelegate喜欢applicationWillResignActive,applicationDidEnterBackground,applicationWillEnterForeground,...

但是......我没有看到它们应该被使用的方式,也没有看到它们为什么不在ViewControllers中......也不是它们在这里的用途.

我的意思是:当应用程序进入后台时,我不知道我的用户是哪个视图.回来,当应用程序进入前台时,我怎么知道该做什么以及我可以调用什么,例如更新视图?

我会理解,如果在每个视图控制器中的那些方法,但在这里,我没有看到它们可以用于具体方式...

你能帮助我理解在这些方法中实现内容的方法吗?

iphone uiviewcontroller background-foreground multitasking

43
推荐指数
2
解决办法
4万
查看次数

为什么Sun Java中的HashSet实现使用HashMap作为其后盾?

查看Java 6的源代码,HashSet<E>实际上是使用HashMap<E,Object>在Set的每个条目上使用虚拟对象实例来实现的.

我认为这对于条目本身的大小来说浪费了4个字节(在32位机器上).

但是,为什么它仍在使用?是否有任何理由使用它,除了使代码更容易维护?

java hashmap hashset

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