LoginSignup
9
8

More than 3 years have passed since last update.

文字列中の変数展開(およびヒア・ドキュメント)

Last updated at Posted at 2016-03-03

こんにちは。
プログラミング言語の文字列中の変数展開とヒア・ドキュメントを調べました。Wikipedia に少しまとまっていました。

また各言語の導入状況を調べてみました。両方とも可能なものも多いようです。

  • 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)
"@
9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8