package org.libspark.common.ability { /** * 他のオブジェクトから値のコピーが可能なオブジェクト. */ public interface ICopyable { /** * 全てのフィールドが 'from' と等しくなるよう値を設定する. * * Require: from != null * Require: Classes.sameType(this, from) * Ensure: Objects.equal(this, from) */ function copy(from:ICopyable):void; /** * 全てのフィールドが再帰的に 'from' と等しくなるよう値を設定する. * * Require: from != null * Require: Classes.sameType(this, from) * Ensure: Objects.deepEqual(this, from) */ function deepCopy(from:ICopyable):void; } }