我有三个将相同对象作为参数的函数。但是后两个什么都不做

时间:2019-01-11 13:39:47

标签: kotlin

我有一个“样本”类,其中包含数据。我想将此数据左,右和居中填充。我没有发布Sample的代码,因为我很确定,这不是问题所在。 (如果需要的话,我会的。)以下代码显示了我的操作方法。

val hline_magf = SampleUtils.getDataFromOneFile("C:\\Users\\XXXX\\Desktop\\test\\hline.421.magf.csv")
val adj_ts = Preprocess.adjustTimestamps(hline_magf)
val abs = Preprocess.abs(adj_ts)
var lerp = Preprocess.lerp(abs)
val lh = Preprocess.hanning_window(lerp)

val lhl = Preprocess.pad_left(lh)           // these cause the problems somewhere
val lhr = Preprocess.pad_right(lh)
val lhm = Preprocess.pad_center(lh)

第一步是对数据进行整形,并使其正常工作。 (所有预处理功能都接受Sample对象,并返回Sample对象。)但是,一旦我使用了其中一种pad功能,其他pad功能就不再起作用。

如果我在第一个小时左移,lhm也会向左填充,如果我首先右移,其他的也会向右填充。

垫板功能一开始就按预期工作,我测试了这三种变化。

这是函数的外观:

    fun pad_left(sample: Sample): Sample {
        var ret_val = sample
        println("#### pad left")

        while (ret_val.timestamp.size < MAX_LEN) ret_val.timestamp = doubleArrayOf(0.0) + ret_val.timestamp
        while (ret_val.absoluteSquare_float.size < MAX_LEN) ret_val.absoluteSquare_float = floatArrayOf(0.0f) + ret_val.absoluteSquare_float
        while (ret_val.x_float.size < MAX_LEN) ret_val.x_float = floatArrayOf(0.0f) + ret_val.x_float
        while (ret_val.y_float.size < MAX_LEN) ret_val.y_float = floatArrayOf(0.0f) + ret_val.y_float
        while (ret_val.z_float.size < MAX_LEN) ret_val.z_float = floatArrayOf(0.0f) + ret_val.z_float

        return ret_val
    }

编辑: 感谢yole。我已经在类中添加了copy()方法,该方法将返回一个新对象。

0 个答案:

没有答案