我正在尝试使用nullable setter和nullable field实现非nullable getter。
parent可以为null,表示父级为this。如果parent不为null,则parent为parent值。this或parent我尝试了这个:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "parent_id")
var _parent: T? = null
var parent: T
get() = if (isParent) this as T else _parent!!
set(value) {
_parent = if (value == null) null else value.parent
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢该_parent变量,但是它对设置方法没有帮助,因为它仍然不能作为null parent: T,因此解决方案不起作用。
在我的Android应用程序中,我使用编译语句来快速插入行:
insert = db.compileStatement(
"INSERT INTO foo (id, aaa, bbb, ccc) " +
"VALUES (?,?,?,?)");
Run Code Online (Sandbox Code Playgroud)
这工作正常且非常快.但是当已经foo有了id,我收到以下异常:
column id is not unique (code 19)
Run Code Online (Sandbox Code Playgroud)
覆盖现有行的正确方法是什么?
考虑一个id字段的类,该字段在存储在数据库中之前可能为null:
class IdableK<T : IdableK<T>> : Comparable<T> {
private var id : Long? = null
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试实现compareTo如下方法:
override fun compareTo(other: T): Int {
if (id == null) {
return -1;
}
if (other.id == null) {
return 1;
}
return id!!.compareTo(other.id!!)
}
Run Code Online (Sandbox Code Playgroud)
这是一种正确的做法吗?有没有一种简单的方法呢?
是否有任何简单的方法可以通过正则表达式将键盘上的引号转换为英语引号,但请确保保留HTML实体?例如,我们想翻译some "text",但我们不想要<span id="blah">.
谢谢!
编辑:
有些人建议,我没有尝试过自己.我曾经尝试过 - 我不想表现出不影响你.但没有成功:
string.replace(
"(?<!\"|\\w|=)\"(?!\\ |\")((?:[^\"]++|\")+?)(?<!\\ |\")\"(?![\"A-Za-z\u00C0-\u02FF\u0370-\u1EFF])()",
"“$1”");
Run Code Online (Sandbox Code Playgroud)
但我无法管理不在HTML标签中翻译这些引号.