如何在kotlin中创建JavaScript匿名对象?我想创建这个对象以传递给nodejs app
var header = {“content-type”:”text/plain” , “content-length” : 50 ...}
Run Code Online (Sandbox Code Playgroud)
bas*_*hor 18
可能的解决方案:
1)js功能:
val header = js("({'content-type':'text/plain' , 'content-length' : 50 ...})")
Run Code Online (Sandbox Code Playgroud)
注意:括号是强制性的
2)用dynamic:
val d: dynamic = object{}
d["content-type"] = "text/plain"
d["content-length"] = 50
Run Code Online (Sandbox Code Playgroud)
3)js+ dynamic:
val d = js("({})")
d["content-type"] = "text/plain"
d["content-length"] = 50
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
另一种可能的解决方案:
object {
val `content-type` = "text/plain"
val `content-length` = 50
}
Run Code Online (Sandbox Code Playgroud)
似乎它不再适用于转义的变量名。
这是一个帮助程序函数,使用lambda语法初始化对象
inline fun jsObject(init: dynamic.() -> Unit): dynamic {
val o = js("{}")
init(o)
return o
}
Run Code Online (Sandbox Code Playgroud)
用法:
jsObject {
foo = "bar"
baz = 1
}
Run Code Online (Sandbox Code Playgroud)
发出的javascript代码
var o = {};
o.foo = 'bar';
o.baz = 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3226 次 |
| 最近记录: |