2015-10-25 76 views
5
tür şeyler yazmak mümkündür Bazı dillerde

:Multi-line dize

olduğunu
val some_string = 
    """First line. 
    | Second line, with leading space.""" 

, tüm önde gelen alanı kadar çıkarılan bir çok satırlı dize nokta, ama daha fazla değil. Bu yazı ile Rust taklit edilebilir:

let some_string = 
    "First line.\n \ 
    Second line, with leading space."; 

Ancak bu gerçek çıkışa yakın bakmanın yararı kaybeder. Pas'ın, örnek sözde kod gibi bir şey yazmanın bir yolu var mı?

cevap

4

Hayır, bu mümkün değil (v1.3 ve muhtemelen uzun bir süre). Ancak, genellikle okunabilir olması gereken çok satırlı dize değişmezleri bir CLI programı için kullanım dizgisi gibi bir çeşit sabit açıklamalardır. Tamam

const USAGE: &'static str = " 
Naval Fate. 

Usage: 
    ... 
"; 

sanırım: Sık sık böyle girintili bu şeyleri görüyoruz. Bu dizeleri veya gerçekten büyük bir tane varsa, include_str! kullanabilirsiniz.

3

Bu, Rust 1.7'nin diliyle desteklenmez, ancak Indoc, istediğiniz şeyi yapan bir yordamsal makrosudur. "Girintili belge" anlamına gelir. Çok satırlı bir dizgi hazırlayan ve en soldaki boşluk olmayan karakter ilk sütunda olan indoc!() adlı bir makro sağlar.

let some_string = indoc!(" 
    First line. 
    Second line, with leading space."); 

Ham dize değişmezleri için de çalışır. her iki durumda da

let some_string = indoc!(r#" 
    First line. 
    Second line, with leading space."#); 

sonuç oluşturduğunuz bir araç veya kitaplık tanıtıyoruz zaman inançlarını belirtmeleri Bu Yığın taşması bekleniyor "First line\n Second line, with leading space."

+0

olduğunu. – Shepmaster