Kotlin是否支持Javascript、Swift或Dart等匿名对象?

Kotlin是否支持Javascript、Swift或Dart等匿名对象?,javascript,swift,object,kotlin,dart,Javascript,Swift,Object,Kotlin,Dart,我很想知道Kotlin是否也支持映射的显式映射(比如javascript对象)。我认为,斯威夫特已经支持这一点,也支持Dart。我知道Java没有,所以这可能是Kotlin没有它的一个原因 在这里你可以看到它是如何在斯威夫特做的。我可以对科特林做类似的事情吗 print([ "1": "lel", "2": [ "2": 2 ], ]) 不完全是,它是静态的,所以它仍然需要互操作 他们确实有一个动态的类型,尽管它可以解决这个问题 使用动态类型值的表达式

我很想知道Kotlin是否也支持映射的显式映射(比如javascript对象)。我认为,斯威夫特已经支持这一点,也支持Dart。我知道Java没有,所以这可能是Kotlin没有它的一个原因

在这里你可以看到它是如何在斯威夫特做的。我可以对科特林做类似的事情吗

print([
    "1": "lel",
    "2": [
        "2": 2
    ],
])

不完全是,它是静态的,所以它仍然需要互操作

他们确实有一个
动态的
类型,尽管它可以解决这个问题


使用动态类型值的表达式被转换为JavaScript“原样”,并且不使用Kotlin运算符约定。

不完全是静态的,因此它仍然需要互操作

他们确实有一个
动态的
类型,尽管它可以解决这个问题


使用动态类型的值的表达式被转换为JavaScript“原样”,并且不使用Kotlin运算符约定。

回答您的问题,不,不是真的。Kotlin是静态类型的,因此如果您希望一个映射包含多种类型的键,您应该创建一个
映射
。如果你只是想把它打印出来,那不一定是最糟糕的事情。Kotlin还有一个很好的内联
to
函数,用于在映射中构造值:

fun main() {
    val v = mapOf(
        "1" to "lel",
        "2" to mapOf("2" to 2)
    )
    println(v)
}
印刷品:

{1=lel,2={2=2}

如果要对映射中存在的值进行任何其他探测,则必须手动检查类型

编辑:也是一件事,但仍然可能不是你想要的

匿名对象与映射的映射不同。它们必须具有有效标识符,并且不能动态添加到JavaScript中的like(例如,
foo['prop']=5
适用于JavaScript中的任何对象
foo
)。它们还附带了警告:

请注意,匿名对象只能在本地和私有声明中用作类型。如果将匿名对象用作公共函数的返回类型或公共属性的类型,则该函数或属性的实际类型将是匿名对象的已声明超类型,如果未声明任何超类型,则将是
Any
。添加到匿名对象中的成员将无法访问


它们的主要用途是创建超类型或接口的匿名实现。如果你想返回并传递它,我会坚持使用地图地图,或者创建一个。惯用的Kotlin利用了这样一个事实,即类非常便宜,而且可以在一行中完成。

回答您的问题,不,不是真的。Kotlin是静态类型的,因此如果您希望一个映射包含多种类型的键,您应该创建一个
映射
。如果你只是想把它打印出来,那不一定是最糟糕的事情。Kotlin还有一个很好的内联
to
函数,用于在映射中构造值:

fun main() {
    val v = mapOf(
        "1" to "lel",
        "2" to mapOf("2" to 2)
    )
    println(v)
}
印刷品:

{1=lel,2={2=2}

如果要对映射中存在的值进行任何其他探测,则必须手动检查类型

编辑:也是一件事,但仍然可能不是你想要的

匿名对象与映射的映射不同。它们必须具有有效标识符,并且不能动态添加到JavaScript中的like(例如,
foo['prop']=5
适用于JavaScript中的任何对象
foo
)。它们还附带了警告:

请注意,匿名对象只能在本地和私有声明中用作类型。如果将匿名对象用作公共函数的返回类型或公共属性的类型,则该函数或属性的实际类型将是匿名对象的已声明超类型,如果未声明任何超类型,则将是
Any
。添加到匿名对象中的成员将无法访问


它们的主要用途是创建超类型或接口的匿名实现。如果你想返回并传递它,我会坚持使用地图地图,或者创建一个。惯用的Kotlin利用了一个事实,即类非常便宜,而且可以在一行中完成。

您想要实现什么?只是不必为日志分配变量?我希望拥有与kotlin中的上述数据结构相同的数据结构,明确地说,您希望实现什么?只是不必为日志分配变量?我希望在kotlin中显式地拥有与上面相同的数据结构