是不是要列出一个将某些内容转换为List的方法?
如果是的话,为什么我不能用它括号?我必须在这里遗漏一些更基本的东西.
这是一个例子:
val l = Array(1,2,3).toList // works fine
val l = Array(1,2,3).toList() // gives the error below
Run Code Online (Sandbox Code Playgroud)
方法适用的参数不足:(n:Int)特征LinearSeqOptimized中的Int.未指定的值参数n.
我正在尝试将包含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个字节.