我对将字符串写入标准输出的可移植方式感兴趣,无需在末尾添加隐式换行符,理想情况下强制编码为 UTF-8,适用于
- jrunscript(来自任何 JDK)
- 犀牛
- 节点.js
我当前的代码尝试检测它在哪里运行,然后使用特定于平台的写入方法:
if (typeof process !== "undefined") { // assume node.js
var log = function(string) {process.stdout.write(string);};
}
else if (typeof println == "undefined") { // assume rhino
var log = function(string) {java.lang.System.out.write(java.lang.String(string).getBytes("utf-8"));};
}
else { // assume jrunscript
var log = function(string) {java.lang.System.out.print(string);};
}
log("X");
log("Y");
它应该导致:
XY
这可以做得更好吗?
对于 jrunscript,我一直在使用 function print
,但这代表JDK-8021773改变了它在 JDK-8 中的行为。