2017-09-08 9 views
-1
列補間 ab私が試み

スカラ列補間

str = "Value of a is %(a)s and b is %(b)s" 

マップのキーである方法の一つは、Python辞書から値を代入されている多くの方法で行うことができるPythonでは

それはScalaの

val data = Map(a->1, b->2) 
val str = "Value of a is %(a)s and b is %(b)s" 

に私が試したコードをコンパイルしてくれた結果を与えていないとScalaで同じことを行うための任意のより良い方法はありますか?

+0

マップに数十のエントリがある場合、意図した動作は何かを指定できますか?すべてのエントリを明示的に補間しますか? – pedromss

+0

こんにちは、以下の回答のいずれかがあなたの問題を解決した場合は、[受諾](http://meta.stackexchange.com/q/5234/179419)のベストアンサーを参考にしてください。それで、あなたが解決策を見つけたことをより広範なコミュニティに示すということです。これを行う義務はありません。 – mrsrinivas

+0

@pedromss Map DS内のエンティティからSQLクエリを生成したい。したがって、疑問。 –

答えて

2

追加することなく次のように考えることができます。

val data = Map("a" -> 1, "b" -> 2) 

// C/C++ way of applying variable values into String 
println("Value of a is %ds and b is %ds".format(data("a"), data("b"))) 

//place variable inside ${} section of strings 
println(s"Value of a is ${data("a")}s and b is ${data("b")}s") 
+0

私はこの方法で私の文字列にSome(1)を取得します...しかし、私はこれを手直ししている間に.. $ {data.get( "a")} get} –

+0

私はScalaで自分のコードをテストしました2.11と正常に動作します。あなたが使っているスカラのバージョンは何ですか? – mrsrinivas

+0

Mrsrinivas私はScala 2.11.11を使用しています –

-1

、Scalaでは、基本的な文字列の補間を使用して文字であなたの文字列を先行し$文字が先行する各変数名で、文字列内のあなたの変数を含めること。式の場合には、上記のアプローチは、すべてのために生じるあなたを与える${...}

val data = Map("a" -> 1, "b" -> 2) 
println(s"${data.toList}".replace("List", "")) 

結果

((1)、(B、2))

とそれを囲ん1つまたは少数のものではなく、マップのエントリ。