アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわぁ♪

Javascriptに「eval」というコマンドがあると思います。
これは、文字列を計算式として変換するものです。

例えば String SHIKI = "A + B" という文字列があり、evalを使ってやると
その時点で文字列ではなくなり、
普通に、
A=3;
B=4;
String C = eval(SHIKI);
と計算式にすることができます(使い方がちがうかもしれませんが)。

しかし、JAVAスクリプトではあるこのコマンドが
JAVAでは見つかりません。

これと同等のコマンド、JAVAにありますか?

A 回答 (2件)

こんちは、sohです


ん~む。core APIにはおそらく無かったと記憶しています(ちょっと自信無し)

JAVAScriptやPerlは文字列操作を重要視しているようですが
JAVAは文字列をそこまで重要視していないんですよ。

逆にJAVAScriptをLiveConnectで流用して(認証済みAppletじゃないと使えないけど)
netscape.javascript.JSObjectで呼び出すって
技もありますが、いまどきこんなん使える人いるのかしら?
    • good
    • 0

JavaScript はインタープリタ型の言語なので、プログラムの実行時にソースコードそのものがインタープリタによって解釈されて実行されます。

したがってJavaScriptの実行環境には計算式などを機械語に翻訳する機能が必要なわけで、プログラムの中からその機能を呼び出すことが出来ればあなたのおっしゃるようなことが実現できるのです。(実際に、evalを使ってその機能を呼び出しています)

しかしJavaはコンパイル型の言語なので、実行時にはバイトコードが解釈されて実行されるわけですから、実行時に計算式などを機械語に変換する必要がありません。したがって、Javaの実行環境にもそのような機能は入っていません。JavaにはJavaScriptのevalのような機能はないということになります。


というよりも、Javaがコンパイル型の言語であるという時点でこのようなことが不可能であるというのは明確です。

例えば、ご質問にあるようなコードですが、

int value1 = 1;
int value2 = 2;
int answer = eval("value1 + value2");

このようなコードがもしあったとしても、コンパイルした時点で変数の名前がvalue1とvalue2であるとかいうような情報は消えてしまう(つまり、変数の名前がどうであるというような情報はバイトコード上には書き込まれない)のですから、実行時に「こんな名前の変数に入っているデータを足せ」というような動作は無理な話です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A