在使用像Scala这样的FastUtils这样的框架时,如何根据有效的专业化生成适当的代码,因为框架本身具有专门的数据结构?即,您如何以编程方式弄清楚什么是专业化并执行适当的代码?那么在这种情况下你如何处理与路径相关的打字。
objects
class Container[@specialized T](var window: Int) {
val data = new ObjectArrayList[T](window)
}
对于char
,我希望它是:
class Container[@specialized T](var window: Int) {
val data = new CharArrayList(window)
}
但这应该基于T
的专业化。如果我以不同的方式表达sudo代码可能就像
class Container[@specialized T](var window: Int) {
val data = specialisationOf(T) match {
case "Char" => new CharArrayList(window)
case "Int" => new IntegerArrayList(window)
...
...
...
case _ => new ObjectArrayList[T](window)
}
}
答案 0 :(得分:1)
正如this question中已经解释的那样,您可以将专用实现封装在类型类中。这看起来或多或少类似于以下代码。
add
请注意,虽然data
的实现看起来总是相同,但add
上调用的方法每次都是不同的重载。如果您以更多态的方式编写此代码,则不会选择最具体的Int
方法,并且您的Char
或INSERT into mytable(id, tp, booleanOne, classification, booleantwo, created_at)
SELECT distinct uttv.id, true, false, uttv.type, false, uttv.created_at
FROM userTable tt WHERE booleantwo = false
AND type is not null
AND tt.id in (
SELECT id from userTable WHERE status=12 AND booleantwo=false AND booleanThree=false UNION SELECT id FROM userTable WHERE status=19
)
AND not exists (select 1 from mytable rre where rre.id = tt.id)
将需要加框。