我希望能够在构建时替换.java文件中的特定模式.实际上,我只想替换某些String值来表示构建时间.(我还想保留原始源文件).有没有办法轻松完成(除了手动方式)?我使用NetBeans作为我的IDE.
我看到Scala标准库错过了获取集合中对象范围的方法,它满足谓词:
def <???>(p: A => Boolean): List[List[A]] = {
val buf = collection.mutable.ListBuffer[List[A]]()
var elems = this.dropWhile(e => !p(e))
while (elems.nonEmpty) {
buf += elems.takeWhile(p)
elems = elems.dropWhile(e => !p(e))
}
buf.toList
}
Run Code Online (Sandbox Code Playgroud)
这种方法有什么好名字?我的实施是否足够好?
这是一个例子:
$ scala
Welcome to Scala 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_112).
Type in expressions for evaluation. Or try :help.
scala> val a: Unit = 1
<console>:11: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
val a: Unit = 1
^
a: Unit = ()
Run Code Online (Sandbox Code Playgroud)
在Scala文档中:
There is only one value of type Unit, ()
Run Code Online (Sandbox Code Playgroud)
为什么Scala编译器默默地将值强制转换为Unit?
一点上下文:我使用Future[Unit]类型来描述一些不返回任何内容的过程.由于Future[Unit]现在实际上是一个子类型Unit,我得到了一些有趣的错误(someFuture.map(a => Future(a))默默地跳过调用操作而不是给出编译警告).我应该使用什么作为一种不会返回任何有意义结果的操作?
我正在尝试使用scala.swing包为我的gui's.在此之前,我使用普通的GroupLayout(手写它:),但scala方式似乎更好.我遇到了一些问题 - 我喜欢BoxLayout,但是当我尝试添加几个窗格,并尝试指定不同的水平对齐时,我得到一些奇怪的东西.
这是代码:
new Frame {
contents = new BoxPanel(Orientation.Vertical) {
contents += new Button("A") {
xLayoutAlignment = 1.0f
}
contents += new Button("B")
size = (200, 200)
}
size = (200, 200)
visible = true
peer.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
}
Run Code Online (Sandbox Code Playgroud)
至少,我希望看到按钮B左侧的按钮A.这是我看到的:

这段代码的Java版本完全一样,所以它不是scala.swing的bug.
我究竟做错了什么?
为什么这不起作用?
scala> actor { loop { receive {
| case s:String => s + " :)"
| }}}
res0: scala.actors.Actor = scala.actors.Actor$$anon$1@2d382988
scala> res0 !? "hello"
... and it hangs here ...
Run Code Online (Sandbox Code Playgroud) 我试着在临时缓冲区中跟随:
(defun r-text-indent ()
(interactive)
(indent-line-to 4)) ;; 4 is just for example
(setq indent-line-function 'r-text-indent)
Run Code Online (Sandbox Code Playgroud)
评估那些制作的临时缓冲区缩进所有4个空格.但所有其他缓冲区都不受影响.
如何在所有纯文本缓冲区中使用此功能?
当我按下"Delete"键盘上的按钮,程序得到三个事件- KEY_PRESSED,KEY_TYPED和KEY_RELEASED.问题是,in KEY_PRESSED和KEY_RELEASED,参数"keyCode"设置,但KEY_TYPED它不是(事实上,在那个事件中没有有意义的信息).使用F5密钥,它甚至更有趣 - KEY_PRESSED并且KEY_RELEASED已注册,但KEY_TYPED从未发生过.
听众被添加了Toolkit.getDefaultToolkit().addAWTEventListener().使用JDK 6.26.
可能是我的问题?
编辑:以下Delete是按下键时发生的事件:
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=127,keyText=Delete,keyChar=Delete,keyLocation=KEY_LOCATION_STANDARD,rawCode=119,primaryLevelUnicode=127,scancode=0] on javax.swing.JButton[,0,0,61x30,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@50f38cf0,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon@6ae2d0b2,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=SVG,defaultCapable=false]
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=Delete,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=127,scancode=0] on javax.swing.JButton[,0,0,61x30,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@50f38cf0,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon@6ae2d0b2,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=SVG,defaultCapable=false]
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=127,keyText=Delete,keyChar=Delete,keyLocation=KEY_LOCATION_STANDARD,rawCode=119,primaryLevelUnicode=127,scancode=0] on javax.swing.JButton[,0,0,61x30,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@50f38cf0,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon@6ae2d0b2,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=SVG,defaultCapable=false]
Run Code Online (Sandbox Code Playgroud)