如何在Kotlin中使用when表达式一次初始化3个变量

时间:2020-06-23 03:30:00

标签: android kotlin

我能够初始化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个变量外,我该如何做?

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