なんだ、JavaScript も可変長引数が使えたんだ。
arguments という特殊な変数を利用すればいいんだね。
って Gjs の /usr/share/gjs-1.0/format.js もそうやっていた。
それなら Python3 っぽい文字列成形が自作できるかも。
いや、すっかり Python3 に慣れてしまったので。
完全に同じでなくてもいいんだ、”{0}, {1}” みたいな手段って便利じゃん。
Gjs なら format.js でいいけど Web で使いたいし参考にして。
String.prototype.format = function() { var result = this; for (var i = 0; i < arguments.length; i++) { var s = "{" + i + "}"; var r = String(arguments[i]); // not tostring(); result = result.replace(s, r); } return result; }
超手抜き、{0:.2f} みたいなのはできない!
それと文字列の tostring だとエラーになるけどキャストなら通るようだ。
これで文字列も整数も実数も対応できる、しかし本当にいいかげんな言語だ。
Fedora は最初から Gjs が入っているから確認が簡単でいいですよ。
SpiderMonkey ですからつまり Firefox でも使えるってことだし。
いや、Web てか iPhone で使えないと意味がない、確認だ。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Python3 っぽい文字列の成形</title> <!-- for Smart Phone --> <meta name="viewport" content=" width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <style> body { -webkit-text-size-adjust: 100%; } </style> <script type="text/javascript"><!-- const STR = "Test : {0}, {1}, {2}"; String.prototype.format = function() { var result = this; for (var i = 0; i < arguments.length; i++) { var s = "{" + i + "}"; var r = String(arguments[i]); // not tostring(); result = result.replace(s, r); } return result; } var init = function() { // Test var text = STR.format("str", 1, 0.5); document.getElementById("ID_TEXT").innerHTML = text; } //--> </script> </head> <body onLoad="init()"> <p>const STR = "Test : {0}, {1}, {2}";<br /> var text = STR.format("str", 1, 0.5);<br /> document.getElementById("ID_TEXT").innerHTML = text;<br /> ↓</p> <p id="ID_TEXT"></p> <p><a href=".">戻る</a></p> </body> </html>
Safari, Google Chrome でも問題ないね、○E は知らないしどうでもいい。
ゲームの “Round {0} Start!” みたいな時に使うと便利かも。