有没有办法在实际关闭之前获得JVM关闭或System.exit调用的通知?我想要这个,所以我的应用程序将能够彻底退出.我意识到这样的事情不太可能存在,但是,也许有这样的事情?
要在JFileChooser中浏览目录,用户可以使用双击.问题是,如果他们点击不够快,文件选择器认为他们想要编辑目录名称,这是非常烦人的.有没有办法禁用目录名称编辑?
我需要在a中显示单个组件JPanel,并且我希望始终将该组件保留在右下角.我尝试用GridBagLayout做到这一点:
val infoArea = new TextArea {
text = "Hello!"
border = Swing.EmptyBorder(30)
background = Color.RED
editable = false
}
val p = new JPanel
p.setLayout(new GridBagLayout)
val c = new GridBagConstraints
c.gridx = 0
c.gridy = 0
c.anchor = GridBagConstraints.LAST_LINE_END
p.add(infoArea.peer,c)
val f = new JFrame
f.setContentPane(p)
f.setVisible(true)
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,文本区域处于中心位置:

我在这做错了什么?
为什么在这个例子中,没有抛出错误,b最终保持默认值?
scala> val b = a; val a = 5
b: Int = 0
a: Int = 5
Run Code Online (Sandbox Code Playgroud) 我使用 emacs 作为我的编辑器,它有一个讨厌的习惯,即为这些文件附近的文件创建锁。似乎 sbt 也将该锁视为源文件,这会导致许多不必要的重建。
有没有办法告诉 sbt 它不应该监视名称以开头的文件中的更改.#?
我尝试了以下内容:
watchSources in Compile <<= (watchSources in Compile) map { files =>
println(files)
files.filter(f => !f.getName.startsWith(".#"))
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
less例如,当我编写将文本输出到 stdout 并使用颜色(通过转义序列)的程序时,如果输出转到其他程序(例如, grep)或文件,我想禁用这些颜色,因为颜色代码会弄乱输出。
是否可以从Java进程中做到这一点?
我需要就地修改文件.所以我打算读取文件内容,处理它们,然后将输出写入同一个文件:
main = do
input <- readFile "file.txt"
let output = (map toUpper input)
-- putStrLn $ show $ length output
writeFile "file.txt" output
Run Code Online (Sandbox Code Playgroud)
但问题是,只有当我取消注释第4行时才会按预期工作 - 我只是输出字符数到控制台.如果我不取消注释,我会得到
openFile: resource busy (file is locked)
Run Code Online (Sandbox Code Playgroud)
有没有办法强制阅读该文件?
我想创建一个函数,它返回几个其他函数的组合,这样
(funcall (compose 'f 'g) x) == (f (g x))
Run Code Online (Sandbox Code Playgroud)
我觉得我在这方面失败了.到目前为止我最好的尝试:
(defun compose (funcs)
"composes several funcitons into one"
(lambda (arg)
(if funcs
(funcall (car funcs) (funcall (compose (cdr funcs)) arg))
arg)))
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,以下仍然返回0:
(funcall (compose '(
(lambda (a) (* a 3))
(lambda (a) (+ a 2))
)) 0)
Run Code Online (Sandbox Code Playgroud)
有办法解决这个问题吗?
我的WeakTypeTag宏中有一些类型,我想生成如下代码:
macroCreate[SomeObject] // => SomeObject(1)
Run Code Online (Sandbox Code Playgroud)
宏的定义将是这样的:
def macroCreate[A] = macro _macroCreate[A]
def _macroCreate[A](c: Context)(implicit wtt: c.WeakTypeTag[A]) = {
c.Expr(Apply(Select(???, newTermName("apply")), List(c.literal(1).tree)))
}
Run Code Online (Sandbox Code Playgroud)
问题是,我如何得到Select给定的类型?
我可以使用一种解决方法,将类型转换为字符串,拆分"."然后创建一个Select字符串列表,但这看起来很糟糕.
是否可以Select直接从类型标签创建?
例如,我有以下形式的功能:
function wrap<T>(item: T): W<T> {
}
interface W<T> {
item: T;
}
Run Code Online (Sandbox Code Playgroud)
是否可以编写函数(mapValues),通过应用此wrap函数并返回正确键入的对象来转换给定的对象值?我理解如何编写实际的函数(lodash的_.mapValues工作正常),但我不知道是否可以应用正确的类型.
是否可以编写mapValues函数以便编译以下内容?
interface Before {
a: number;
b: string;
}
interface After {
a: W<number>;
b: W<string>;
}
let obj1: Before = { a: 1, b: "2" };
let obj2: After = mapValues(obj1);
function typecheck_number(arg: number) {}
function typecheck_string(arg: string) {}
typecheck_number(obj2.a.item);
typecheck_string(obj2.b.item);
Run Code Online (Sandbox Code Playgroud) scala ×5
java ×4
swing ×2
elisp ×1
emacs ×1
file-io ×1
haskell ×1
io ×1
jfilechooser ×1
jvm ×1
layout ×1
lazy-io ×1
locking ×1
macros ×1
sbt ×1
scala-2.10 ×1
scala-macros ×1
typescript ×1