我读了这篇文章并试着用D编程语言练习,但在第一次练习中遇到了问题.
(1)在无限循环中显示数字序列(1,2,3,4,5 ......等).如果有人按特定键(Say ESCAPE键),程序应该退出.
当然,无限循环不是一个大问题,但其余的是.我怎么能在D/Tango中获得一个关键击中?在tango FAQ中它说使用C函数kbhit()或get(),但据我所知,这些不在C标准库中,并且不存在于我用于编程的Linux机器附带的glibc中.
我知道我可以使用像ncurses这样的第三方库,但它有同样的问题,就像kbhit()或get()一样,它不是C或D中的标准库,也没有预先安装在Windows上.我希望我能完成这个练习只使用D/Tango并且可以在Linux和Windows机器上运行它.
我怎么能这样做?
似乎docDirectory in Compile <<= (baseDirectory / "api")已弃用,如果build.sbt包含该设置,sbt将无法启动.
我应该如何在sbt 0.13中设置scaladoc的输出目录?
当我遵循ScalaQuery的Queries教程时,我发现了一些有趣的东西,我不知道为什么这么好.
这是我定义的数据库模式:
object Users extends Table[(Int, String, String)]("users") {
def id = column[Int]("id", O NotNull)
def first = column[String]("first", O NotNull)
def last = column[String]("last", O NotNull)
def * = id ~ first ~ last
}
Run Code Online (Sandbox Code Playgroud)
这是我使用的查询:
object Main
{
val database = Database.forURL("jdbc:sqlite:sample.db", driver = "org.sqlite.JDBC")
def main(args: Array[String]) {
database withSession {
val query1 = for (user <- Query(Users)) yield user.id ~ user.last
val query2 = for (user <- Users if user.id > 5) yield user.id ~ user …Run Code Online (Sandbox Code Playgroud) 我正在尝试将包含CJK ExtB计划中的Unicode字符的Java字符串转换为十进制NCR.
例如(你可以试试http://people.w3.org/rishida/tools/conversion/):
游鍚堃𧦧懷这是我尝试过的(在Scala中):
def charToHex(char: Char) = "&#%d;" format(char.toInt)
def stringToHex (string: String) = string.flatMap(charToHex)
println (stringToHex("???")) // 游鍚堃
println (stringToHex("?")) // ��懷
println ("?".toCharArray().length) // Why it is 3?
Run Code Online (Sandbox Code Playgroud)
如您所见,它在第一种情况下正确转换,三个unicode字符转换为三个NCR.
但在第二种情况下"怀",只有两个unicode字符,但Java/Scala似乎认为它是一个包含三个字符的字符串.
那么,这里发生了什么,我怎么能正确地转换第二个案例就像我提到的网站上的转换器一样?非常感谢.
更新:
char[] = ?, char.toInt = 55390char[] = ?, char.toInt = 56743char[] = ?, char.toInt = 25079现在我想我知道发生了什么.字符""在UTF-16中编码为0xD85E 0xDDA7,它是4个字节而不是2个字节.因此在转换为char数组时需要2个元素,其中数据类型char只能表示2个字节.
我读过一篇博文(抱歉用中文写的),作者说:
这是一个与web相关的应用程序,我们声明了一些私有变量,当用户做了一些操作时,这些变量将设置为某个值供以后使用.
通常应用程序运行良好,但是当我们使用繁重的JavaScript打开某个网站时,我们的应用程序开始表现错误且意外(没有任何活动切换),我们无法找到原因.
最后,我们发现这是由整数变量设置为零引起的.但我们非常肯定我们的代码不会将其重置为零,因此只有一个可能的结论:"为了满足WebView所需的资源,垃圾收集器已经收集了我们的变量".所以最后我们设置将此变量声明为静态变量以避免此问题.
坦率地说,这个"GC设置为零到零"的论点完全违背了我的Java知识.
因为据我所知:
但我也担心是否有一些我没有考虑过的事情.
所以我对以下问题非常感兴趣: