我有一个具有以下规范的 Java 二叉树,我需要克隆它。
public class Item {
private final String value;
public final Item left;
public final Item right;
...
}
Run Code Online (Sandbox Code Playgroud)
看似非常简单的任务让我感到困惑,因为克隆的树必须与原始树对象共享相同的单元格,而不是被复制。
但是,如果要将某个项目添加到原始树或克隆树,则它不得传播到另一棵树。IE。如果要将新项目添加到原始树中,则它不得出现在克隆树中,反之亦然。
此外,这需要在没有递归和任何循环构造的情况下完成。
所以我想知道是否有人能想到这样做,因为我不知道从哪里开始?
我有一个有趣的问题。clone()我在 google chrome 扩展中使用 jQuery 函数。该函数正在克隆表行。问题是 TR 有一些内联 javascript/jquery 使用$j()而不是jQuery().
每次我尝试输出克隆行时,都会收到错误“$j 未定义”。
所以我想到了这个问题的两种可能的解决方案:
$j()(尝试使用 jquery 没有冲突)而不是jQuery()或者
$j为jQuery.我的问题是我无法完成任何一个......
var rows = jQuery("#field-mapping-template").clone(true);
rows.insertBefore("#field-mapping-template");
Run Code Online (Sandbox Code Playgroud) 如何RectangleF在 C# 中轻松克隆(复制)a?
显然有一些不优雅的方法可以做到这一点,例如new RectangleF(r.Location, r.size),但是肯定有一个.Copyor.Clone方法隐藏在某处吗?但这些都不适合我编译,也似乎没有复制构造函数。我怀疑有一些简单的 C# 标准方法可以复制任何结构,但我还没有找到。
如果重要的话,我的真正目标是创建一个返回矩形偏移版本的方法(因为,令人惊讶的是,RectangleF没有这样的内置 - 它只有一个变异器方法)。我对此最好的尝试是:
public static RectangleF Offset(RectangleF r, PointF offset) {
PointF oldLoc = r.Location;
return new RectangleF(new PointF(oldLoc.X+offset.X, oldLoc.Y+offset.Y), r.Size);
}
Run Code Online (Sandbox Code Playgroud)
(令人震惊的是缺少加法运算符,这使得它变得更加丑陋PointF,但这是另一个问题。)有没有更简单的方法来做到这一点?
如何克隆或序列化 Windows 窗体控件?
当我尝试使用此代码“CloneControl(Control ct1)”克隆 Windows 窗体控件时,它允许我复制具有某些可序列化属性的控件,而不是所有属性。
public Form1()
{
InitializeComponent();
Columns = new DataGridViewTextBoxColumn[2];
for (int i = 0; i < 2; i++)
{
Columns[i] = new System.Windows.Forms.DataGridViewTextBoxColumn();
//
// Columns[i]
//
Columns[i].HeaderText = "j" + (i + 1);
Columns[i].Name = "Column" + (i + 1);
Columns[i].Width = 50;
}
dataGridView1 = new System.Windows.Forms.DataGridView();
dataGridView1.Name = "dataGridView1";
dataGridView1.Location = new System.Drawing.Point(100, 100);
dataGridView1.RowHeadersWidth = 50;
dataGridView1.RowTemplate.Height = 25;
dataGridView1.Size = new System.Drawing.Size(55 + 50 * 2, 25 + dataGridView1.RowTemplate.Height …Run Code Online (Sandbox Code Playgroud) 使用标准方式将 git 存储库从远程服务器克隆到本地计算机相当容易,但我需要将远程存储库克隆到另一个远程存储库,这可能吗?
PS我提出这个问题是因为我无法在GitHub上分叉我自己的项目来创建子项目,我只能分叉其他用户的项目。这是关于克隆以从父项目创建整个子项目,而不仅仅是子模块。
我有三门课:
Base extends Object
Derived1 extends Base
Derived2 extends Derived1
Run Code Online (Sandbox Code Playgroud)
每个类都有自己的字段,应该克隆这些字段。我很难理解实现clone和避免重复代码的最佳方法。我有以下架构,但对我来说看起来最糟糕
Derived2.clone():它调用super.clone()并接收 的对象Derived1。然后它调用 newDerived2(objOfDerived1)来super(objOfDerived1)复制其所有字段,然后复制Derived2.clone()所有字段。Derived2
对此你会怎么说呢?也许有任何文章描述这个问题?
UPD:这个想法可以在这里展示
class Base implements Cloneable {
private String dataOfBase;
public Base() {
}
public Base(Base base) {
this.dataOfBase = base.dataOfBase;
}
@Override
public Object clone() {
Base base = new Base();
base.dataOfBase = dataOfBase;
return base;
}
}
class Derived extends Base {
private String dataOfDerived;
public Derived(Base base) {
super(base); …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个Object(称为State)的深层副本,以对其中的一个实例进行修改,然后使用State基于新的修改旧实例的代码进行后续操作State。
这是State:
public class State implements Cloneable {
// 0: empty
// 1: white
// 2: black
private int[][] board;
private int player;
public State(int[][] board, int player) {
this.board = board;
this.player = player;
}
public int[][] getBoard() {
return board;
}
public int getPlayer() {
return player;
}
public void setBoard(int[][] board) {
this.board = board;
}
public void setPlayer(int player) {
this.player = player;
}
@Override
protected …Run Code Online (Sandbox Code Playgroud) 我尝试编写一个通用迭代器,但我不知道如何在不使用clone. 有什么方法可以在函数中创建变量next并返回引用吗?如果我替换T为u32,那么我可以只返回Some(self.count),但是使用泛型,这是不可能的。
use num_traits::Num;
use std::clone::Clone;
struct Counter<T>
where
T: Num + Clone,
{
count: T,
}
impl<T> Counter<T>
where
T: Num + Clone,
{
fn new() -> Counter<T> {
Counter { count: T::zero() }
}
}
impl<T> Iterator for Counter<T>
where
T: Num + Clone,
{
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
self.count = self.count.clone() + T::one();
Some(self.count.clone())
}
}
fn main() {
let mut …Run Code Online (Sandbox Code Playgroud) 使用该命令Mesh.clone();您可以克隆网格。搜索显示几何形状和材料被保留。但是,我想以不同的方式控制两个网格的不透明度。因此我认为我也必须克隆这些材料。
有没有办法复制包含材质的网格,以便我可以与原始网格分开控制新网格的不透明度?
我正在尝试克隆此存储库: https://github.com/Electronicarts/EASTL 但几乎所有子模块都将此存储库添加为子模块!(参见: https: //github.com/electricarts/EASTL/tree/master/test/packages)
这会创建无限递归,并永远保持克隆。
这个问题有解决办法吗?!