Trong Scala có 2 biểu diễn các số có độ chính xác kép, một là AnyVal
, số khác AnyRef
. Trên JVM chúng được ánh xạ tới số nguyên thủy double
và lớp java.lang.Double
tương ứng.Làm thế nào để tôi đại diện cho hộp đôi trong Scala tinh khiết?
Bây giờ điều gì xảy ra trên các nền tảng khác với JVM? Tôi có thể sử dụng Scala.Double
cho nguyên thủy, nhưng làm cách nào để xác định rằng tôi muốn tham chiếu đến hộp được đóng hộp mà không chỉ định java.lang.Double
?
[Bối cảnh - còn lại để hiểu ý nghĩa của câu trả lời của Thomasz, nhưng không phải là vấn đề cơ bản.
Tôi có một đúp mà tôi muốn tiêm với mùa xuân vào một thành phần Wicket:
class MyPanel(id: String) extends Panel(id) {
@SpringBean(name="rxAlarmLimitDb") var alarmLimitDb: Double = _
Nếu tôi chỉ định kiểu như scala.Double
như trên, các vòi phun thất bại, vì nó chỉ có thể tiêm Objects.
Nếu tôi chỉ định java.lang.Double
như loại lĩnh vực này, tất cả là tốt
class MyPanel(id: String) extends Panel(id) {
@SpringBean(name="rxAlarmLimitDb") var alarmLimitDb: java.lang.Double = _
Nhưng tôi đang cố gắng để giảm dependance của tôi trên rơi xuống trở lại trên API Java, vì vậy làm thế nào để đại diện cho đóng hộp Double
không có nó? ]
tôi đoán là đóng hộp đôi * là * 'java.lang.Double' - giống như Scala sử dụng các lớp Java cho rất nhiều thứ khác (AnyRef = java.lang.Object, String = java.lang.String). Tôi không biết chắc chắn, mặc dù. – Owen
@Owen bạn đúng. –
Các câu lệnh đó là đúng trên JVM. Trên CLR có các ánh xạ khác nhau và tôi muốn biết cách thể hiện Double được đóng hộp trên một trong hai. –