2012-02-24 28 views
6

Thật dễ dàng, đủ để tạo ra:Tại sao Scate's BigDecimal không có ZERO?

object zero extends BigDecimal(java.math.BigDecimal.ZERO) 

Tôi chỉ tự hỏi liệu đây là một sự giám sát, hoặc nếu có một quyết định có ý thức để không thêm này và nếu như vậy, là có lý do tại sao tôi nên tránh mã trên. Có lẽ phải làm với MathContext?

Trả lời

4

Tôi nghĩ đó là bởi vì thông thường bạn không cần nó. Trong khi đó, trong Java bạn cần phải gõ một cái gì đó giống như

BigDecimal b = new BigDecimal(1.23).add(BigDecimal.ZERO); 

tại Scala, có sự chuyển đổi số đó có nghĩa là bạn có thể viết

val b = BigDecimal(1.23) + 0 

Bạn cũng có thể viết nó chỉ đơn giản như BigDecimal(0). Nếu bạn khởi tạo rằng rất nhiều bạn có thể muốn lưu nó dưới dạng giá trị được đặt tên (giống như bất kỳ số nào khác), nhưng bạn thường không cần, và tôi nghĩ nó giúp đơn giản hóa API nếu bạn loại bỏ các trường hợp đặc biệt mà bạn phải nhớ.

14

Nếu tôi phải đoán, đó là bởi vì con đường dự kiến ​​để có được giá trị đó sẽ là như thế này:

val zero: BigDecimal = 0 
+0

Điểm tốt. Cảm ơn câu trả lời của bạn nhưng tôi chấp nhận câu trả lời của Luigi bởi vì tôi nghĩ rằng nó chi tiết hơn và hữu ích hơn cho khách truy cập trong tương lai. – pr1001

Các vấn đề liên quan