Tôi đang cố gắng xuất một triển khai Scala của thuật toán để sử dụng trong JavaScript. Tôi đang sử dụng @JSExport
. Thuật toán hoạt động với các giá trị Scala Char
và Long
được đánh dấu là mờ đục trong interoperability guide.Làm việc với các loại mờ (Char và Long)
Tôi muốn biết (a) điều này có nghĩa là gì; và (b) những gì đề nghị là để đối phó với điều này.
tôi đoán nó có nghĩa là tôi nên tránh Char
và Long
và làm việc với String
cộng với một kiểm tra thời gian chạy trên chiều dài (hoặc có lẽ sử dụng một Sized
bộ sưu tập hình thù) và Int
để thay thế.
Nhưng các ý tưởng khác được chào đón.
Chi tiết ...
Các loại mã Tôi đang nhìn vào là:
@JSExport("Foo")
class Foo(val x: Int) {
@JSExport("add")
def add(n: Int): Int = x+n
}
... mà hoạt động giống như mong đợi: new Foo(1).add(2)
sản xuất 3
.
Thay thế các loại bằng Long
cùng một báo cáo cuộc gọi: java.lang.ClassCastException: 1 is not an instance of scala.scalajs.runtime.RuntimeLong
(và điều gì đó tương tự với các phương pháp lấy và trả lại Char
).
Cảm ơn bạn - điều đó rất rõ ràng. –