显然,when表达式的编译方式不同,具体取决于表示常量的方式:
object SwitchOverConstants {
val foo = 1
val bar = 2
val baz = 3
fun one(x: Int) = when (x) {
foo -> "foo"
bar -> "bar"
baz -> "baz"
else -> "else"
}
fun two(x: Int) = when (x) {
SwitchOverConstants.foo -> "foo"
SwitchOverConstants.bar -> "bar"
SwitchOverConstants.baz -> "baz"
else -> "else"
}
}
Run Code Online (Sandbox Code Playgroud)
这是以下字节代码one:
0: iload_1
1: istore_2
2: iload_2
3: getstatic #15 // Field foo:I
6: if_icmpne 14
9: ldc #34 …Run Code Online (Sandbox Code Playgroud) 我有一个大型多模块SBT项目.一个模块是Play2项目.现在,默认情况下,IntelliJ IDEA排除整个target文件夹,IDEA自己的编译器不会compile从sbt 运行目标,但会尝试自己解决所有问题.这导致重要的Play2部分,如未构建的路由和反向路由器.
当我sbt compile从控制台运行时,这些组件是构建的,但由于它们target位于IDEA中默认排除的文件夹中,因此IDEA忽略了那里的所有内容.
每次切换Git分支时(Play2项目目前只在一个分支中)我必须进入项目结构并手动调整排除的文件夹.
是不是有可能让IDEA自己解决这个问题,并sbt compile在重建项目时打电话?
我正在使用IBM Domino 9.0.1 FP4开发XPage应用程序,它使用过时的JVM和Java 6.这种限制经常迫使我在Domino环境之外创建Java应用程序,并在与Domino服务器位于同一计算机上的辅助最新JVM中运行它们.这种"解决方案"有效,但远非最佳.因此我有两个问题:
A)是否可以手动更新Domino JVM?
B)如果没有,是否有更简单的解决方案将Java 7或8与当前的Domino版本一起使用?
个人提示:我知道其中一个"下一个"Domino版本应该具有Java 8功能.但是,(至少在我看来)这个版本何时发生还不清楚.我一直在等待Domino JVM的更新至少1年或2年,我已经不再相信这会很快发生......
我试图找出使用Ant预编译将部署到Oracle应用服务器的JSP的最佳方法.即使我正在部署到Oracle应用服务器,我也希望避免使用Oracle的Ant版本.
我有一个ant任务,在其中我想得到当前进程id(echo $PPID来自命令行的la ).
我ksh在Solaris上运行,所以我想我可以这样做:
<property environment="env" />
<target name="targ">
<echo message="PID is ${env.PPID}" />
<echo message="PID is ${env.$$}" />
</target>
Run Code Online (Sandbox Code Playgroud)
但那没用; 变量没有被替换.事实证明PPID,SECONDS和某些其他env变量不会成为Ant的表示.
接下来我试试这个:
<target name="targ">
<exec executable="${env.pathtomyfiles}/getpid.sh" />
</target>
Run Code Online (Sandbox Code Playgroud)
getpid.sh 看起来像这样:
echo $$
Run Code Online (Sandbox Code Playgroud)
这让我得到了生成的shell脚本的PID.更接近,但不是我真正需要的.
我只想要我当前的进程ID,所以我可以在名称中创建一个具有该值的临时文件.有什么想法吗?
我想编写Ant任务来自动启动我的服务器任务,然后使用我的应用程序的URL打开Internet Explorer.
显然我必须先执行startServer任务然后startApplication执行任务.
但是,startServer即使在启动服务器执行startApplication任务之后,Ant也没有完成任务.
基本上我希望Ant理解startServer不会结束,当startServer任务在后台运行时,ANT必须startServer完成任务和runstartApplication任务.
我正在寻找一种方法来在Ant文件中包含.jar,这样我就可以直接使用它并在我的目标中调用它的方法.就我而言,它是ant-contrib-1.0b3.jar.
我有一个 Ant 构建脚本,它当前启动一个服务器,然后等待 URL 被解析,然后再为我执行一些 Selenium 测试。该任务看起来像这样;
<target name="test.selenium" depends="compile.constants, launch.server" description="Run the Selenium tests">
<echodesc/>
<waitfor maxwait="1" maxwaitunit="minute" checkevery="2" checkeveryunit="second">
<http url="http://127.0.0.1:${product.listenport}/"/>
</waitfor>
<exec executable="${deps.python}" spawn="false" failonerror="true" dir="src">
<arg line="manage.py test --selenium-only" />
</exec>
</target>
Run Code Online (Sandbox Code Playgroud)
成功后,我想调用一个将关闭服务器的 URL,但我不确定如何使用 Ant 执行此操作。可以让 Ant 打电话吗127.0.0.1:${product.listenport}/QUIT?
我之前是通过taskkill对正在运行的进程发出命令来实现此目的的,但这已经开始导致 Windows 错误,并且该 URL 会彻底关闭服务器。
我能找到的最好的解决方案是使用这个宏在浏览器中打开 URL,但这仍然会给我带来问题,因为在测试结束时我会打开一个浏览器;http://chris.m0nk3y.net/blog/post/opening-a-url-in-the-default-browser-with-ant
最终我使用了以下蚂蚁目标;
<target name="shutdown.server" depends="init.properties" description="Shutdown the server">
<get src="http://127.0.0.1:${product.listenport}/QUIT" dest="NUL"/>
</target>
Run Code Online (Sandbox Code Playgroud)
'NUL' 使我能够使用 get 而不处理正在创建的新文件,因此这非常适合这项工作 \o/
当我在Xcode中运行项目时会出现警报.
Invalid or missing Program/ProgramArguments
Run Code Online (Sandbox Code Playgroud)
我检查了构建设置但无法弄清楚如何修复它.
我需要app/design/frontend/MyVendor/MyTheme/web/images/image.png从javascript文件(payment.js)获取存储在主题()中的图像的URL 。
在PHP中,我可以这样做:
<?php echo $block->getViewFileUrl('images/image.png') ?>
Run Code Online (Sandbox Code Playgroud)
如何在JavaScript中执行此操作?