相关疑难解决方法(0)

如何编辑状态数组中的项?

所以这是我的状态:

this.state = {
  ids: ['A', 'E', 'C']
};
Run Code Online (Sandbox Code Playgroud)

我将如何修改状态,使索引1处的"E"变为"B"?例如:

this.setState({
  ids[1]: 'B'
});
Run Code Online (Sandbox Code Playgroud)

怎么做?

reactjs

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

递归引用自身内的列表

所以我在python中遇到了一些非常奇怪的东西.我尝试将列表的引用添加到自身.代码可能有助于证明我所说的比我能表达的更好.我正在使用IDLE编辑器(交互模式).

>>>l=[1,2,3]
>>>l.append(l)
>>>print(l)
[1,2,3,[...]]
>>>del l[:-1]
>>>print(l)
[[...]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,输出是预期的.但是当我这样做的时候.

y=l[:]
print(y)
Run Code Online (Sandbox Code Playgroud)

对我而言,似乎输出应该是

[[...]]
Run Code Online (Sandbox Code Playgroud)

但它是

[[[...]]]
Run Code Online (Sandbox Code Playgroud)

显然,它不是创建列表的副本,而是在y中引用列表.

y [0]是l返回True.我似乎无法找到一个很好的解释.有任何想法吗?

python list repr self-reference

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

字符数组和指针之间的区别

我在两个代码中做同样的事情.

在代码1中:我使用了a char *并使用mallocin 分配空间main.

在代码2中:我使用了一个char数组用于相同的目的.但为什么输出会有所不同?

代码1:

struct node2
{
    int data;
    char p[10];
}a,b;

main()
{
    a.data = 1;

    strcpy(a.p,"stack");
    b = a;
    printf("%d %s\n",b.data,b.p);     // output 1 stack
    strcpy(b.p,"overflow"); 
    printf("%d %s\n",b.data,b.p);     // output  1 overflow
    printf("%d %s\n",a.data,a.p);     // output  1 stack
}
Run Code Online (Sandbox Code Playgroud)

代码2:

struct node1
{
    int data;
    char *p;
}a,b;

main()
{
    a.data = 1;
    a.p = malloc(100);
    strcpy(a.p,"stack");
    b = a;
    printf("%d %s\n",b.data,b.p);   //output 1 stack
    strcpy(b.p,"overflow");  
    printf("%d %s\n",b.data,b.p); …
Run Code Online (Sandbox Code Playgroud)

c c++ arrays struct pointers

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

使用实体框架缓存和延迟加载

假设我有一个应用程序,例如一个网站,我的objectcontext在请求期间离开.我应该缓存一些使用EF加载的数据,以避免读取数据库并提高性能.

好吧,我用EF读取数据,我将对象放在缓存中(说AppFabric,而不是内存缓存),但是可以延迟加载的相关数据现在为空(对此属性的访问会导致nullreferenceexception).我不想在一个请求中加载所有内容,因为它会太长,所以我希望按需加载,一旦读取,我想用新获取的数据完成缓存.

注意 :

  • 只读操作,没有创建/更新/删除.
  • 不想使用Jarek Kowalski制作的"EF Provider Wrappers"等二级缓存

我怎样才能做到这一点 ?

编辑:我用northwind数据库构建了这个样本,它正在工作:

class Program
{
    static void Main(string[] args)
    {
        // normal use
        List<Products> allProductCached = null;
        using (NORTHWNDEntities1 db = new NORTHWNDEntities1())
        {
            allProductCached = db.Products.ToList().Clone<DbSet<Products>>();
            foreach (var product in db.Products.Where(e => e.UnitPrice > 100))
            {
                Console.WriteLine(product.ProductName + " => " + product.Suppliers.CompanyName);
            }
        }

        // try to use cache, but missing Suppliers
        using (NORTHWNDEntities1 db = new NORTHWNDEntities1())
        {
            foreach (var product in allProductCached.Where(e => e.UnitPrice > 100)) …
Run Code Online (Sandbox Code Playgroud)

c# caching entity-framework-4

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

Java - 实现数组的深层和浅层副本

我试图理解Java中浅层和深层复制的概念.关于这个主题有很多文章和问答,但每当我尝试在真正的Java代码中实现这些概念时,我都不清楚一切.

我基于理解的答案之一就是在这个链接中,通过模式解释深度和浅层复制.

我会在每个案例的实施情况下向您展示:

  • 浅拷贝:

我在我的示例中使用了System.arraycopy()方法,因为我在许多文章中读到它执行浅拷贝(以及克隆方法)

public class Test {

    public static void main(String[] args) {
        NameValue[] instance1 = {
                new NameValue("name1", 1),
                new NameValue("name2", 2),
                new NameValue("name3", 3),
        };
        NameValue[] instance2 = new NameValue[instance1.length];

        // Print initial state
        System.out.println("Arrays before shallow copy:");
        System.out.println("Instance 1: " + Arrays.toString(instance1));
        System.out.println("Instance 2: " + Arrays.toString(instance2));

        // Perform shallow copy
        System.arraycopy(instance1, 0, instance2, 0, 3);

        // Change instance 1
        for (int i = 0; i < 3; i++) …
Run Code Online (Sandbox Code Playgroud)

java arrays deep-copy shallow-copy

8
推荐指数
2
解决办法
1366
查看次数

在角度2中创建深层副本

如何在角度2中创建深层副本,我尝试使用let newObject = Object.assign({}, myObject)但仍然myObject反映了在newObject中完成的所有更改.

angularjs angular

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

Python对象混淆:a = b,修改b和更改!

我以为我知道Python直到今晚.做这样的事的正确方法是什么?这是我的代码:

a = ["one", "two", "three"]
b = a  # here I want a complete copy that when b is changed, has absolutely no effect on a
b.append["four"]
print a  # a now has "four" in it
Run Code Online (Sandbox Code Playgroud)

基本上我想知道,而不是b = a步骤,我如何正确地制作列表或字典的副本,以便b更改时a不会随之改变?

python variables reference

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

从C中的联合复制数据

我有一个指向带有union的结构的指针

所以我们说我们有

struct A {
  union {
    char **word;
    struct A *B
  } u;
};
Run Code Online (Sandbox Code Playgroud)

我有类型A*的变量x和y

typedef A* A_t;
A_t x;
A_t y;
Run Code Online (Sandbox Code Playgroud)

将x-> u = y->你足以复制联盟中的东西.

c pointers

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

你能用值显式复制包含"引用"元素的PHP数组吗?

关于PHP数组元素的引用的背景

假设您使用嵌套的PHP数组创建一个复杂的数据结构,如下所示:

$a1 = array(
    'b' => array('foo' => 1),
    'c' => array('bar' => 1)
);
Run Code Online (Sandbox Code Playgroud)

想象一下,数组要更加嵌套,具有更多元素和更长,更有意义的名称.

如果需要经常访问$ a1的子结构,对于读写,可能会想要创建这样的"别名":

$b = &$a1['b'];
Run Code Online (Sandbox Code Playgroud)

然而,由于"任务"实际上改变了$ a1,这导致了巨大的混乱.

我认为许多缺乏经验的PHP开发人员(比如我)会认为$ b是在分配后对$ a1 ['b']的引用.真正发生的是$ b AND $ a1 ['b']变成对元素的引用array('foo' => 1),带来意想不到的后果.我发现这非常不直观.

假设您需要保留$ a1,但是您还需要$ a1的副本,让我们调用副本$ a2,并更改$ a2的一些元素:

$a2 = $a1;           // Copy $a1 to $a2
$a2['b']['foo'] = 2; // GOTCHA! This will change $a1['b']['foo'] as well!
$a2['c']['bar'] = 2; // This will not change $a1['c']['bar'] however
Run Code Online (Sandbox Code Playgroud)

因为我们之前创建了对$ a1 ['b']的引用,所以该元素将通过引用分配,而$ a1的其余部分按值复制.这花了我几个小时才弄明白. …

php arrays reference

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

在`x = xy()`之后,为什么`x`变成了`None`而不是被修改(可能导致“AttributeError:'NoneType'对象没有属性”)?

如果您的问题作为此问题的重复项而被关闭,那是因为您有一些通用形式的代码

x = X()
# later...
x = x.y()
# or:
x.y().z()
Run Code Online (Sandbox Code Playgroud)

其中X是某种类型,它提供了y旨在z变异修改)对象(X类型的实例)的方法。这可以适用于:

  • 可变的内置类型,例如listdictsetbytearray
  • 标准库(尤其是 Tkinter 小部件)或第三方库提供的类。

这种形式的代码很常见,但并不总是错误的。问题的明显迹象是:

  • x.y().z()一样,会引发异常AttributeError: 'NoneType' object has no attribute 'z'

  • 有了x = x.y(),x就变成None, 而不是被修改的对象。这可能会被后来的错误结果发现,或者被像上面这样的异常(x.z()稍后尝试时)发现。

Stack Overflow 上有大量关于这个问题的现有问题,所有这些问题实际上都是同一个问题。之前甚至有多次尝试在特定上下文中涵盖同一问题的规范。然而,理解问题并不需要上下文,因此这里尝试一般性地回答:

代码有什么问题吗?为什么这些方法会这样,我们如何解决这个问题?


另请注意,当尝试使用 alambda或列表理解)来产生副作用时,会出现类似的问题。

同样明显的问题可能是由因其他原因返回的方法引起的None …

python attributeerror command-query-separation nonetype

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