我需要一个小部件来选择TCP/UDP端口,所以我写了以下内容:
public static JSpinner makePortSpinner()
{
final JSpinner spinner = new JSpinner(
new SpinnerNumberModel( DefaultPort, 1024, 65535, 1 ) );
spinner.setFont( Monospaced );
return spinner;
}
Run Code Online (Sandbox Code Playgroud)
...... Monospaced并且DefaultPort是静态常量.
我想从结果显示中删除数字分组字符.例如,默认值55024显示为"5524",我希望它为"55024".我知道NumberFormat,正如我可能使用的那样JFormattedTextField,有一个setGroupingUsed(boolean)方法可以达到这个目的.有这样的东西JSpinner吗?我应该继承SpinnerNumberModel吗?
我正在编写一个trait应该指定clone返回a 的方法CloneResult,如下所示:
trait TraitWithClone extends Cloneable {
def clone: CloneResult
}
Run Code Online (Sandbox Code Playgroud)
这里的目的是收紧对这个界面有用java.lang.Object的clone()东西的返回类型.但是,当我尝试编译它时,我得到:
错误:在特征View2中重写方法克隆类型为()CloneResult; 类型为()java.lang.Object的类Object中的方法clone具有较弱的访问权限; 它应该是公开的; (注意在型性状视图2()CloneResult是抽象的,并且由具体的方法克隆在类型的类对象因此重写该方法克隆()java.lang.Object中)
public当Scala没有关键字时,我如何要求实现?我知道我能做到:
trait TraitWithClone extends Cloneable {
override def clone = cloneImpl
protected def cloneImpl: CloneResult
}
Run Code Online (Sandbox Code Playgroud)
......但这似乎是一个黑客.有什么建议?
有没有什么快速的方法可以用作具体的功能(类型,比如说(A) => B)PartialFunction[A, B]?我所知道的最简洁的语法是:
(a: A) => a match { case obj => func(obj) }
Run Code Online (Sandbox Code Playgroud)
在任何地方都有隐式转换,例如:
implicit def funcAsPartial[A, B](func: A => B) = new PartialFunction[A, B] {
def isDefinedAt(a: A) = true
def apply(a: A) = func(a)
}
Run Code Online (Sandbox Code Playgroud)
我想我刚刚写了我要找的东西,但这已经存在于Scala库中吗?
我尝试将 bind ( >>=) 和 Kleisli Composition ( >=>) 运算符与基本Result类型一起使用,但它们要么未定义,要么不在范围内:
let f x =
if x%2 = 0 then Ok (x/2)
else Error ()
let ff x = Ok x >>= f >>= f
let ff' = f >=> f
[<EntryPoint>]
let main _ =
printfn "%A" (ff 12)
printfn "%A" (ff' 28)
0
Run Code Online (Sandbox Code Playgroud)
错误 FS0043需要支持运算符“>>=”的类型,但给定了函数类型。您可能缺少函数的参数。
我尝试过open一些不同的名称空间来将定义纳入范围,但没有成功。
从这里看来,如果没有扩展,运算符就不能被一般地定义,但是在任何地方都有标准的定义吗Result?