為什么 java 編譯而 kotlin 不編譯?以及如何charAt在 kotlin 中呼叫?
爪哇:
import java.nio.CharBuffer;
public class Test {
public static void test() {
CharBuffer buffer = CharBuffer.wrap("asd");
buffer.charAt(0);
}
}
科特林:
import java.nio.CharBuffer
class TestKotlin {
fun test() {
val buffer = CharBuffer.wrap("asd")
buffer.charAt(0)
}
}
uj5u.com熱心網友回復:
可以簡單地使用陣列索引。
@Test
fun `myChar is M`() {
val buffer: CharBuffer = CharBuffer.wrap("MyString")
val myChar = buffer[0]
assert(myChar == 'M') { "myChar is not M" }
}
}
CharBuffer實作CharSequence,您可以在kotlin 檔案中找到更多相關資訊。
uj5u.com熱心網友回復:
我從這個老問題的理論出發,Kotlin 開發人員曾經不小心將CharBuffer.charAt()其CharBuffer.get()視為等價的,并將該charAt()方法隱藏在 Kotlin 中并將其映射到get(). 他們這樣做可能是為了促進陣列訪問語法(括號)的使用并避免假定的冗余。
也許后來當上述問題得到解決時,他們錯過了取消隱藏該方法。
buffer.charAt(i)將buffer[buffer.position() i]在 Kotlin 中。您可以撰寫一個擴展函式,以便您可以繼續使用它:
fun CharBuffer.charAt(index: Int) = this[position() index]
如果您選擇越界索引,則錯誤訊息的資訊量將比原始方法中的資訊略少。
也許有人應該為此在 YouTrack 上打開一個問題......
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/345410.html
