2015-07-07 26 views
8

Dường như scala không hỗ trợ dấu gạch chéo jdk7 và sau đó trong các chữ số?Dấu gạch dưới trong các chữ số trong scala

Tôi đang sử dụng jdk 8

scala> System.getProperty("java.version") 
res0: String = 1.8.0_40 

Ở đây chúng ta cố gắng sử dụng một JDK7 (và sau) số chữ:

scala> val x = 1_000_000 
<console>:1: error: Invalid literal number 
     val x = 1_000_000 
      ^

Có một lựa chọn ngôn ngữ scala cho việc này?

+2

Đây là một 'điều javac'. Không có lý do gì để nghĩ rằng 'scalac' sẽ hỗ trợ nó. Cú pháp Java rất ít là Scala hợp lệ. –

+5

Đã có [một chuỗi dài \ [scala-debate \]] (https://groups.google.com/d/msg/scala-debate/4-CE9Lpf6CM/UJrhS9cyYcgJ) về điều này chỉ trong tuần trước. Câu trả lời ngắn gọn: không, không có, nhưng điều này có thể có sẵn trong Scala một số ngày, và trong khi chờ đợi có một số cách để có được một cái gì đó tương tự mà không có nhiều tiếng ồn cú pháp. –

+6

@BoristheSpider Scala thực sự là khá gần với Java về cú pháp cho chữ, do đó, kỳ vọng rằng nó sẽ hỗ trợ gạch dưới đây không phải là không hợp lý. –

Trả lời

11

Trong Scala đất bạn có thể đã thấy những thứ như:

s"My name is $firstName" 

sql"select id, name from members where id = ${id}" 

Không có lý do để không có:

i"1 000 000" 

hoặc thậm chí:

animal"Dog" // checks that Dog is on the list of animal words 

Không có i chuỗi suy tích hợp sẵn trong thư viện Scala tuy nhiên bạn có thể sử dụng:

implicit class IntContext(val sc: StringContext) { 
    def i(args: Any*): Int = { 
    val orig = sc.s(args: _*) 
    orig.replace(" ", "").toInt 
    } 
} 

i"1 000 000" // res0: Int = 1000000 
+0

Cảm ơn nhưng tôi đã tự hỏi cụ thể về sự hỗ trợ trình biên dịch được xây dựng - mà một trong những ý kiến ​​cho OP giải quyết khá tốt. – javadba

+0

Không có hỗ trợ được xây dựng. Phải viết ra con số mà không có bất kỳ khoảng trống hoặc sử dụng cách tiếp cận tôi đã giải thích ở đây nếu hiệu suất không phải là một mối quan tâm. – bjfletcher

+0

Tôi đánh giá cao phương pháp tiếp cận của bạn nhưng tôi không cần sự can thiệp: nếu không có hỗ trợ ngôn ngữ thì hãy làm như vậy. Có vẻ như nó chưa được quyết định để hỗ trợ trong tương lai hay không. – javadba

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