こんにちは。
プログラミング言語の文字列中の変数展開とヒア・ドキュメントを調べました。Wikipedia に少しまとまっていました。
- 文字列中の変数展開 (string interpolation, string template)
- ヒア・ドキュメント (here document, multiline string literals)
また各言語の導入状況を調べてみました。両方とも可能なものも多いようです。
- JavaScript ES6 の例
var x = 222;
var mstr = `
111
${x}
`;
- シェルスクリプトの例(
<<
で標準入力を作れる)
LINEBREAK="\\r\\n"
cat << EOS
LINEBREAK='$LINEBREAK'
EOS
- Ruby の例
lang = 'language'
RUBY = 'Ruby'
json = <<EOS
{
"#{lang}": "#{RUBY}"
}
EOS
- Python は、format() を介して変数展開とほぼ同等なことができるようです。
- ヒア・ドキュメントは docstring にも使われています。
dict={"x":222}
mstr ="""\
111
{x}\
""".format(**dict)
- python 3.6 では "literal string interpolation (f-strings)" が導入されました1
value = 7
print(f"The value is {value}.")
- Kotlin
val text = """
x is ${x}
user name is ${user.name}
"""
- Scala
val text = s"""
x is ${x}
user name is ${user.name}
"""
- Swift は変数展開に加えて v.4.0 でヒアドキュメントが導入されました
let text = """
x is \(x)
user name is \(user.name)
"""
- C はヒアドキュメント相当を持っています
const char *str = "a"
" b";
- Javaは、ヒア・ドキュメントも変数展開も持っていないようですね。
- "Multiline" (GitHub) というものもあるようですが、クラスに記述する必要があり、local変数にはダメです
(下記)。
/**
DELETE
FROM post
*/
@Multiline static String deleteFromPost;
- PowerShell では、
$x = "222"
$mstr = @"
111
$($x)
"@