使用我现有的函数计算新值而不替换现有值

时间:2018-01-26 04:07:34

标签: function actionscript-3

我有这个计算潮汐的代码。功能很大,使用日期和端口来计算它。

有4个结果:

r"\d+(?:\.\d+)?"

现在,我想计算4个新值(对于日期+1),而不是使用新日期来驱动所有函数,因为它会更改haute1 haute2 basse1 basse2 的值, haute1haute2basse1 .. 我只想用现有函数创建新值“basse2”。

知道是否有可能吗?

我正在做的是调用现有的函数:

haute1_tomorrow

maree("city, tomorrow_date); 作为明天的日期。但它只会触发函数并为tomorrow_datehaute1haute2basse1设置新值。 我希望保留这些值,并创建4个新值basse2haute1_tomorrowhaute2_tomorrowbasse1_tomorrow

我的功能(我不会粘贴整个功能,因为你读它的时间太长了):

basse2_tomorrow

... ..

1 个答案:

答案 0 :(得分:0)

您需要 OOP 面向对象的编程

不考虑您的实际问题,这样的问题的基本方法是使组件/类自给自足以解决您的问题的一个实例。例如:

package
{
    public class Trigonometry
    {
        public var degrees:Number;
        public var radians:Number;

        public var sine:Number;
        public var cosine:Number;
        public var tangent:Number;

        public function Trigonometry(value:Number)
        {
            // Normalize degrees to -180..+180.
            value %= 360;

            if (value >= 180) value -= 360;
            if (value < -180) value += 360;

            degrees = value;
            radians = value * Math.PI / 2;

            sine    = Math.sin(radians);
            cosine  = Math.cos(radians);
            tangent = Math.tan(radians);
        }
    }
}

然后你使用实例,它们是独立且孤立的,不会混淆对方的字段:

var A30:Trigonometry = new Trigonometry(30);
var A45:Trigonometry = new Trigonometry(45);
var A60:Trigonometry = new Trigonometry(60);
var A90:Trigonometry = new Trigonometry(90);

trace("Sine of 30 degrees is:", A30.sine);
trace("Cosine of 60 degrees is:", A60.cosine);
trace("Tangent of 45 degrees is:", A45.tangent);

UPD :然后在你的任务中,你需要这样的东西:

package
{
    public class Mar
    {
        // Here you need to declare all the variables you are going to use.
        // Like (I don't know what type you need):
        public var $pmm:String;
        public var $pms:String;

        private var callback:Function;

        // Then put all the methods you need:
        public function maree($inputport:String = "", $inputdate:String = "", handler:Function = null):void
        {
            callback = handler;

            // Your processing here.
        }
    }
}

然后你使用它完全相同:

var M1:Mar = new Mar;
var M2:Mar = new Mar;

M1.maree(/* first call arguments here */);
M2.maree(/* second call arguments here */);

因此,实例将在不考虑彼此存在的情况下运行,并且您可以访问各自的字段,如:

trace(M1.$pmm);
trace(M1.$pms);