小编lun*_*con的帖子

Rhino:Java数字的行为与Javascript数字不同

我在我的Javascript程序中可以访问这个Java类的实例

public class ContentProvider {
  public Object c(int n) {
    switch (n) {
      case 1: return 1.1;
      case 2: return 2.2;
      case 3: return 3.3;
      case 4: return "4";
      case 5: return new java.util.Date();
    }
    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是main()中的代码:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
engine.put("ctx", new ContentProvider());

res = engine.eval("ctx.c(1)");

System.out.printf("rhino:> %s (%s)%n"
        , res
        , res != null ? res.getClass().getName() : null
);
Run Code Online (Sandbox Code Playgroud)

简单的表达式ctx.c(1)打印:

rhino:> 1.1 (java.lang.Double)
Run Code Online (Sandbox Code Playgroud)

现在这里发生的事情是ctx.c(1) + ctx.c(2): …

javascript java rhino

17
推荐指数
1
解决办法
1161
查看次数

我可以在sqlite中插入触发器之前更新New吗?

例如:

create table test (id numeric, t date not null);

create trigger test_in
before insert on test
for each row
when New.t is null
begin
 -- set New.t = now();
end;
Run Code Online (Sandbox Code Playgroud)

设置New.t不起作用,其中只能选择/插入/更新/删除stmt. 我无法更改数据库结构(可以设置默认值).插入触发器后也因为"not null"约束而不适合.我找到的唯一解决方案:

insert into test values (New.id, now());
select raise(ignore);
Run Code Online (Sandbox Code Playgroud)

测试数据库仅用于说明目的,实际上存在计算数据的更复杂的情况.可能有这样的"更新New set New.t = now()",或不?

sql sqlite

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

javascript ×1

rhino ×1

sql ×1

sqlite ×1