代码拉取完成,页面将自动刷新
package stat
// Where 返回根据“条件”从“x”或“y”中选择的元素
// 这里先实现一个简单的, 留给于总重构
// params只支持两个默认值x和y, 如果condition为true返回x, 否则返回y
// condition和param都可能是基础数据类型,也可能是一个slice, 并且长度可能不一致
// 直接写成序列版本, 可能更简单
func Where[T StatType](condition []T, x, y []T) []T {
// 第一步, 找出最长的
clen := len(condition)
xlen := len(x)
ylen := len(y)
// 第二步, 找出最大长度
c := []float64{float64(clen), float64(xlen), float64(ylen)}
maxLength := int(Max(c))
// 处理默认值
defaultValue := typeDefault[T]()
// 对齐所有长度
if clen < maxLength {
condition = Align(condition, defaultValue, maxLength)
}
if xlen < maxLength {
x = Align(x, defaultValue, maxLength)
}
if ylen < maxLength {
y = Align(y, defaultValue, maxLength)
}
// 初始化返回值
d := make([]T, maxLength)
for i := 0; i < maxLength; i++ {
// NaN也被认为是真
if condition[i] != 0 {
d[i] = x[i]
} else {
d[i] = y[i]
}
}
return d
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。