我能够初始化2种不同类型的变量,例如:
app.post('/uploadPicture', isLoggedIn, function(req, res) {
const form = formidable({ multiples: true });
form.parse(req, (err, fields, files) => {
if (err) {
next(err);
return;
}
compress_images(URL+files.someExpressFiles.path+"/"+files.someExpressFiles.name
, "public/build"+files.someExpressFiles.path+"/",
{compress_force: false, statistic: true, autoupdate: true}, false,
{jpg: {engine: 'mozjpeg', command: ['-quality', '60']}},
{png: {engine: 'pngquant', command: ['--quality=20-50']}},
{svg: {engine: 'svgo', command: '--multipass'}},
{gif: {engine: 'gifsicle', command: ['--colors', '64', '--use-col=web']}}
, function(error, completed, statistic){
console.log('-------------');
console.log(error);
console.log(completed);
res.json(statistic);
console.log('-------------');
});
res.json({ fields, files });
});
});
除了3个变量外,我该如何做?
答案 0 :(得分:1)
使用Triple
确实是正确的答案,但请考虑使用命名数据类。 Kotlin documentation说:
标准库提供配对和三重。不过,在大多数情况下, 命名数据类是更好的设计选择,因为它们使 通过为属性提供有意义的名称,使代码更具可读性。
答案 1 :(得分:0)
val (p1, p2) = when (someEnum: SomeEnum) {
SomeEnum.x -> "NameX" to 100
SomeEnum.y -> "NameY" to 200
}
创建2个元素的元组-to
,因此使用三个元素Pair<A, B>
的元组是解决方案。
Triple<A, B, C>
对于相同类型的变量:
val (p1, p2, p3) = when (enum: SomeEnum) {
SomeEnum.x -> Triple("NameX", 100, true)
SomeEnum.y -> Triple("NameY", 200, false)
}
答案 2 :(得分:0)
三元组是您的问题
Kotlin语言提供了一种简单的数据类型,可以在一个实例中存储三个值。可以使用称为Triple的数据类完成此操作。这是一个简单的泛型类,存储任何三个值,这三个值之间的关系没有任何有价值的含义。两个Triple对象之间的比较是基于值进行的,即只有所有三个分量都相等时,两个Triple才相等。
类定义–
data class Pair<out A, out B, out C> : Serializable
有三个参数: A –第一个值的类型 B –第二个值的类型 C –第三个值的类型
构造函数– 在Kotlin中,构造函数是一个特殊的成员函数,当创建类的对象主要是为了初始化变量或属性时会调用该函数。要创建Triple的新实例,我们使用:
Pair(first: A, second: B, third: C)
Kotlin使用构造函数创建三元组的示例–
fun main() {
val (x, y, z) = Triple(1, "Person", 2.0)
println(x)
println(y)
println(z)
}
输出:
1 人 2.0