相关疑难解决方法(0)

更改LISP中的列表副本

在LISP中,我有一个传递列表的函数.我想在不更改原始列表的情况下更改此列表的元素.通常,我会copy-list用来创建我将更改的列表的本地副本,但这似乎不起作用:

CL-USER> (defun test (item)
    (let ((copy (copy-list item)))
         (setf (nth 0 (nth 0 (nth 0 copy))) t)
         (print item)
         (print copy)))

CL-USER> (defparameter item `(((NIL NIL) (NIL NIL) (NIL NIL))
                     ((NIL NIL NIL) (NIL NIL NIL))
                     ((3 3) (NIL NIL))))

CL-USER> (test item)
(((T NIL) (NIL NIL) (NIL NIL)) ((NIL NIL NIL) (NIL NIL NIL)) ((3 3) (NIL NIL))) 
(((T NIL) (NIL NIL) (NIL NIL)) ((NIL NIL NIL) (NIL NIL NIL)) ((3 3) (NIL NIL))) 
(((T NIL) …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp pass-by-reference

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

d3js在编码解码数据之后工作

我正在研究d3js和分层布局的数据可视化.我的数据如下:

       0
     / | \
    /  |  \ 
   1   5   3
    \  |   |
     \ |   |
       4  /
       | /
       2
Run Code Online (Sandbox Code Playgroud)

因为我无法链接到多个父节点,所以我复制了显示的节点:

       0
     / | \
    /  |  \ 
   1   5   3
   |   |   |
   |   |   |
   4   4   |
   |   |   |
   2   2   2
Run Code Online (Sandbox Code Playgroud)

我做了一个小提琴演示来展示我的问题:

  • 当我在JSON输入中使用正确的数据时,我有良好的布局(蓝色边框图形).
  • 当我使用循环来解析我的JSON输入时,我有奇怪的图形(绿色边框图形).

这是我用来解析输入的循环:

for (i in root[2].Arcs){
  var d = root[1].Nodes[root[2].Arcs[i].D];
  var s = root[1].Nodes[root[2].Arcs[i].S];
  if (!d.children){
    d.children = [];
  }
  d.children.push(s);
}
Run Code Online (Sandbox Code Playgroud)

对我来说:控制台中的两个打印元素都是相同的,但不是布局的渲染.对象引用中可能存在一些不同之处.

我发现一个糟糕的解决方案是解码然后编码我的var:

    var root …
Run Code Online (Sandbox Code Playgroud)

javascript json d3.js

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

ArrayList,java.这两个构造函数之间有什么区别

我是一个仍然在java的新手,你能告诉我这两个构造函数之间的区别吗?

第一:

public class Plan
{

   ArrayList<Point2D> points;

   public Plan(ArrayList<Ponto2D> points)
   {
       this.points = new Arraylist<Point2D>(points);
   }

}
Run Code Online (Sandbox Code Playgroud)

这个:第二个:

public class Plan
{

    public Plan(ArrayList<Point2D> lpoints)
    {
        points = new ArrayList<Point2D>();
        for(Point2D p : lpoints) point.add(p.clone());
    }

}
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
2
解决办法
167
查看次数

在vue.js的子组件中创建传递的道具的本地副本?

在vue.js中,在不更改父数据的情况下编辑prop的正确方法是什么?我的意思是,每当我们在vue.js中将任何属性从父对象传递给子对象时,如果我们在子组件中对该属性进行任何更改,那么更改也将反映在父组件中。

vue.js中有什么方法可以在子代中对传递的属性进行本地复制?

我用谷歌搜索,但是到处都写到我们可以做到这一点。

 props:["user"],
  data(){
    return {
      localUser: Object.assign({}, this.user)
    }
  }
Run Code Online (Sandbox Code Playgroud)

这里给用户传递了一个对象,我正在本地用户中创建它的副本,但是它根本不起作用,本地用户未定义。

您是否遇到过这样的情况,您必须更改子组件中的父属性而不影响父组件的状态,即在子组件中创建自己的副本然后进行编辑?

任何对此的见解都会有所帮助。

我还读过在vue@2.3.3中的某个地方?当我们想将道具从父亲传递给孩子时,我们需要手动创建本地数据来保存道具,这会使很多无用的工作成为现实。

我们可以像这样手动创建本地数据:

props: ['initialCounter'],
data: function () {
    return { counter: this.initialCounter }
}
Run Code Online (Sandbox Code Playgroud)

但这对我来说也不起作用。我正在将vue cli 3.0.1用于开发目的。

这是我的相同代码。

在我的应用程序中,我有一个列表视图。

在此处输入图片说明

当用户单击“ 查看焦点视图”按钮时,用户将被重定向到以下提到的视图,即实际上是引导程序-模式视图。

在此处输入图片说明

在这里,用户可以编辑Name的值,但是由于我在这里将name作为来自aprent组件的属性进行传递,因此在此处进行编辑会导致其在父组件上以及列表视图中也进行更新。

deep-copy vue.js vue-component vuejs2 vue-cli

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

C语言中结构复制的行为

我一直在阅读这个网站上关于如何在C中复制结构的一些问题.我一直在玩一些代码,试图理解'浅'复制之间的区别(新结构只是指向一个指针)第一个结构的内存地址)和"深度"复制(其中数据逐个成员地复制到新的内存块中).

我创建了以下代码,假设它将显示"浅"复制行为:

#include <stdio.h>

struct tester
{
    int blob;
    int glob;
    char* doob[10];
};

int main (void)
{
    //initializing first structure
    struct tester yoob;
    yoob.blob = 1;
    yoob.glob = 2;
    *yoob.doob = "wenises";

    //initializing second structure without filling members
    struct tester newyoob;
    newyoob = yoob; 
    //assumed this line would simply copy the address pointed to      by 'yoob'

    //printing values to show that they are the same initially
    printf("Before modifying:\n");
    printf("yoob blob: %i\n", yoob.blob);
    printf("newyoob blob: %i\n", newyoob.blob);

    //modifying 'blob' in …
Run Code Online (Sandbox Code Playgroud)

c struct

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

是否有更好的深度克隆方法列表?

所以我需要一种深度克隆的方法.我想要一张卡片列表等于另一张卡片列表,但我还想修改其中一个克隆.

我做了一个复制列表的方法,如下所示:

    public List<Card> Copy(List<Card> cards)
    {
        List<Card> clone = new List<Card>();
        foreach (var card in cards)
        {
            clone.Add(card);
        }
        return clone;
    }
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

        _cards = new List<Card>();
        _thrownCards = new List<Card>();

        _cards = Copy(_thrownCards);
        _thrownCards.Clear();
Run Code Online (Sandbox Code Playgroud)

我没有C#的经验,但不知怎的,我的直觉告诉我,我的复制方法可以变得更简单.没有其他方法可以深度复制列表吗?我尝试使用MemberWiseClone,但这只是创建了对同一个对象的引用,而不是克隆它(可能我误解了MemberWiseClone方法).

有没有人有任何提示如何简单地克隆列表对象?

c# deep-copy

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

Powershell 克隆有序哈希表

这个线程跟进。

问题

无法克隆有序哈希表。

是否有捷径可寻?我确实发现了一些对于这样一个“简单”任务来说似乎过于复杂的例子。

移动电源

$a = [ordered]@{}
$b = $a.Clone()
Run Code Online (Sandbox Code Playgroud)

输出

Method invocation failed because [System.Collections.Specialized.OrderedDictionary] does not contain a method named 'Clone'.

powershell hashtable

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

在React Redux中设置状态的更好做法

我正在学习Redux。我有点新,所以我不想在一开始就养成不良习惯,这就是为什么我要写这个。

我正在阅读的文档说,在化简器中,我们需要始终设置要更改它的状态-换句话说,请执行以下操作:

const someReducer = (state=initState, {type, payload}) => {
    switch(type) {
        case 'CHANGE_VALUE_ONE' : {
            state = {...state, valueOne: payload }
            break
        }
        case 'CHANGE_VALUE_TWO' : {
            state = {...state, valueTwo: payload }
            break
        }
        default:
            state = state
    }
    return state
}
Run Code Online (Sandbox Code Playgroud)

我的方法是创建一个newState常量,该常量与我们收到的状态相同,对虚拟对象进行更改并返回它-或在代码中:

const userReducer = (state= {name: null, age: null}, {type, payload}) => {
    const newState = {...state}
    switch(type) {
        case 'CHANGE_VALUE_ONE' : {
            newState.valueOne= payload
            break
        }

        case 'CHANGE_VALUE_TWO' : {
            newState.valueTwo= payload
            break
        }
    } …
Run Code Online (Sandbox Code Playgroud)

reactjs redux react-redux

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

值类型和引用类型问题

嗨,我正在尝试做两个对象的简单交换.我的代码是

void Main()
{
  object First = 5;
  object Second = 10;

  Swap(First, Second);
  //If I display results it displays as 
  //Value of First as 5 and Second as 10
}

private static void Swap(object First, object Second)
{
  object temp = First;
  First = Second;
  Second = temp;
}
Run Code Online (Sandbox Code Playgroud)

由于对象是引用类型,因此应将其引用传递给方法,并且应该交换.为什么不发生?

.net c# swap reference-type

3
推荐指数
2
解决办法
2692
查看次数

VueJS - 创建 ref 对象的只读副本(Composition API)

我通过 onMounted 挂钩从数据库获取数据并以表单显示对象。当用户单击保存时,我只想检查对象数据是否已更改。

onMounted(async () => {
  loadingBasic.value = true
  const doc = await getDocument('workspaces',props.uid) //doc is ref({}) also
  wspace.value = doc.value
  loadingBasic.value = false
})
Run Code Online (Sandbox Code Playgroud)

我创建了一个只读对象,但是当 wspace 对象更改时,只读对象也会更改。如何创建 ref 对象的未更改的初始副本?

顺便问一下,还有另一种简单的方法来检查表单更改吗?

javascript readonly vue.js vuejs3 vue-composition-api

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