scala? Trong scala, 'ở đây tài liệu' được bắt đầu và kết thúc trong 3 "
Làm thế nào để đầu ra """ trong 'ở đây tài liệu' của
val str = """Hi,everyone"""
Nhưng nếu chuỗi có chứa các """
? Làm thế nào để sản lượng Hi,"""everyone
?
scala? Trong scala, 'ở đây tài liệu' được bắt đầu và kết thúc trong 3 "
Làm thế nào để đầu ra """ trong 'ở đây tài liệu' của
val str = """Hi,everyone"""
Nhưng nếu chuỗi có chứa các """
? Làm thế nào để sản lượng Hi,"""everyone
?
Kể từ unicode thoát qua \u0022
trong xâu nhiều đường sẽ không giúp bạn, bởi vì họ sẽ được đánh giá là ba dấu ngoặc kép rất giống nhau, cơ hội duy nhất của bạn là ghép lại như vậy:
"""Hi, """+"""""""""+"""everyone"""
Điều tốt là trình biên dịch đủ thông minh để sửa lỗi này và do đó nó sẽ làm cho một chuỗi duy nhất ra khỏi nó khi biên dịch.
Ít nhất, đó là những gì scala -print
nói.
object o {
val s = """Hi, """+"""""""""+"""everyone"""
val t = "Hi, \"\"\"everyone"
}
và sử dụng scala -print
→
Main$$anon$1$o.this.s = "Hi, """everyone";
Main$$anon$1$o.this.t = "Hi, """everyone";
Lưu ý tuy nhiên, bạn không thể nhập nó như vậy. Định dạng mà các kết quả đầu ra scala -print
dường như chỉ sử dụng nội bộ.
Tuy nhiên, có thể có cách dễ dàng hơn, đơn giản hơn để thực hiện việc này.
bạn không thể
heredocs scala là chuỗi thô và không sử dụng bất kỳ mã thoát nếu bạn cần dấu ngoặc kép tripple trong một chuỗi sử dụng chuỗi nối thêm chúng
Bạn không thể sử dụng dấu ngoặc kép, theo như tôi biết. Trong thông số kỹ thuật, mục 1.3.5, nêu rõ:
Một chuỗi nhiều dòng là một chuỗi ký tự kèm theo dấu ngoặc kép "" "..." "". Trình tự các ký tự là tùy ý, ngoại trừ việc nó có thể chứa ba hoặc nhiều ký tự trích dẫn chỉ mang tính cuối cùng. Các ký tự phải không nhất thiết phải có thể in được; các dòng mới hoặc các ký tự điều khiển khác cũng được cho phép. Thoát Unicode hoạt động ở mọi nơi khác, nhưng không có chuỗi thoát nào trong số (§1.3.6) được diễn giải.
Vì vậy, nếu bạn muốn đầu ra ba dấu ngoặc kép trong một chuỗi, bạn vẫn có thể sử dụng chuỗi giá duy nhất với thoát:
scala> val s = "Hi, \"\"\"everyone"
s: java.lang.String = Hi, """everyone
Bạn cũng có thể sử dụng trình tự thoát unicode. –
Vì vậy, không có cách nào để làm điều này trong heredoc. Tôi không hiểu tại sao scala không ủng hộ nó. – Freewind
@jhominal: vẫn không hoạt động nếu bạn unicode ba ký tự trích dẫn trong một chuỗi nhiều dòng. Nó sẽ vẫn được hiểu là sự kết thúc của chuỗi ký tự nhiều dòng –
Đó là một hack hoàn toàn mà tôi posted on a similar question, nhưng nó cũng hoạt động ở đây: sử dụng cấu trúc XML của Scala dưới dạng định dạng trung gian.
val str = <a>Hi,"""everyone</a> text
Điều này sẽ cung cấp cho bạn chuỗi có ba dấu ngoặc kép.
Không có ký tự thoát nào? Anh ta không thể làm '/"/"/" '? – wheaties
không, không phải trong chuỗi heredoc thêm \ hoặc/trước khi "thêm \" hoặc/"vào chuỗi nhưng bạn có thể thoát" trong chuỗi thông thường –