首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问JShell中的“父作用域”

访问JShell中的“父作用域”
EN

Stack Overflow用户
提问于 2017-09-14 08:55:08
回答 1查看 269关注 0票数 7

似乎,在另一个JShell中创建的JShell对象无法访问父级的JShell作用域。例如:

代码语言:javascript
复制
jshell> int x = 1;
x ==> 1

jshell> x
x ==> 1

jshell> jdk.jshell.JShell js = jdk.jshell.JShell.create();
js ==> jdk.jshell.JShell@1a052a00

jshell> js.eval("x");
$4 ==> [SnippetEvent(snippet=Snippet:ErroneousKey#1-x,previousStatus=NONEXISTENT,status=REJECTED,isSignatureChange=false,causeSnippetnull)]

jshell> js.eval("int x = 2;");
$5 ==> [SnippetEvent(snippet=Snippet:VariableKey(x)#2-int x = 2;,previousStatus=NONEXISTENT,status=VALID,isSignatureChange=true,causeSnippetnullvalue=2)]

jshell> js.eval("x");
$6 ==> [SnippetEvent(snippet=Snippet:ExpressionKey(x)#3-x,previousStatus=NONEXISTENT,status=VALID,isSignatureChange=true,causeSnippetnullvalue=2)]

是否有可能使父作用域对子范围可见?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-14 10:03:44

根据的说法,关于JShell的一个重要警告是:它在自己的JVM中运行。

创建()的javadoc说:

等价于JShell.builder().build()。

当您遵循建()的javadoc时,您会发现:

构建一个JShell状态引擎。这是所有JShell功能的入口点。这将创建一个用于执行的远程进程。因此,关闭返回的实例非常重要。

换句话说:最有可能的是,您正在创建另一个JVM实例,在其中运行另一个shell。因此,至少就目前而言:没有机会有一个孩子,jshell知道它的父母。

(如:我非常希望Java的REPL特性在将来的某个时候允许将JShell附加到已经运行的JVM上)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46214641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档