javascript匿名对象在kotlin
如何在kotlin中创建JavaScript匿名对象? 我想创建这个对象传递给nodejs应用程序
var header = {“content-type”:”text/plain” , “content-length” : 50 ...}
可能的解决方案:
1)用js
功能:
val header = js("({'content-type':'text/plain' , 'content-length' : 50 ...})")
注意:括号是强制性的
2)具有dynamic
:
val d: dynamic = object{} d["content-type"] = "text/plain" d["content-length"] = 50
3)用js
+ dynamic
:
val d = js("({})") d["content-type"] = "text/plain" d["content-length"] = 50
4)与本机声明:
native class Object { nativeGetter fun get(prop: String): dynamic = noImpl nativeSetter fun set(prop: String, value: dynamic) {} } fun main(args : Array<String>) { var o = Object() o["content-type"] = "text/plain" o["content-length"] = 50 }
另一个可能的解决方案
object { val `content-type` = "text/plain" val `content-length` = 50 }
看起来,它不适用于转义的变量名称。
我是一个Kotlin新手(尽管不是新手开发者),我稍微扩展了@bashor的答案,使其看起来更整齐一些,它们是有效的Java标识符,但仍然允许那些不是的标识符。 我用Kotlin 1.0.1测试了它。
@native("Object") open class Object { } fun jsobject(init: dynamic.() -> Unit): dynamic { return (Object()).apply(init) } header = jsobject { validJavaIdentifier = 0.2 this["content-type"] = "text/plain" this["content-length"] = 50 }
- 什么是kotlin-gradle-plugin和kotlin-js-library之间的正确版本匹配?
- 将从edittext获取的字符串转换为Kotlin语言的Integer
- Jackson与Kotlin混合
- 如何避免Java / Kotlin / IntelliJ IDEA中的StackOverFlow错误?
- 将kotlin谓词转换为java
- 正确的方法来获取与Gradle的Kotlin脚本配置属性
- Android Studio 3.0 gradle 3.0.0-beta2,打破Kotlinunit testing覆盖?
- kotlin数据类+ bean验证jsr 303
- Kotlin替换为Groovy XmlSlurper&MarkupBuilder