"NodeJS" (外部評価システム)
詳細
- Node.jsのバージョン7.10.1以降がサポートされる.
- Node.jsは,ChromeのV8 JavaScriptエンジン上に構築されたJavaScriptランタイムである.
- Wolfram言語でNode.jsが使えるよう設定するためには,ワークフローの「ExternalEvaluate用にNodeJSを設定する」の手順に従うとよい.
ExternalEvaluateの使用法
- ExternalEvaluate["NodeJS",code] はNode.js REPLでコード列を実行し,Wolfram言語式として結果を返す.
- ExternalEvaluate["NodeJS""String",code] はNode.js REPLでコード列を実行し,結果を解釈しない.
- ExternalEvaluate["NodeJS""type",code]の"type"として可能な設定:
-
"Expression" Wolfram言語式に変換しようと試みる "String" 外部評価子によって出力された生の文字列を与える "ExternalObject" 結果をExternalObjectとして返す
サポートされる外部操作
- ExternalOperation["Eval","code"]は"code"の外部評価を表す.
- ExternalOperation["Eval","code",assoc]はパラメータが assoc で与えられた"code"の外部評価を表す.
- ExternalOperation["Call",func,arg1,arg2,…]は与えられた引数が arg1, arg2, … の関数func を呼び出す.
- ExternalOperation["GetAttribute",obj,"attr"]は obj の属性"attr"を得る.
- ExternalOperation["SetAttribute",obj,"attr",val]は obj の属性"attr"を与えられた値 val に設定する.
- ExternalOperation["Cast",obj,"type"]は obj を指定された"type"に変換する.
例題
すべて開くすべて閉じる例 (2)
Fileラッパーを使ってファイルに含まれるコードを実行する:
CloudDeployを使ってコードを配備し,CloudObjectから直接コードを実行する:
URLラッパーを使ってオンラインでホストされたコードを直接実行する:
スコープ (28)
NodeJSでExternalFunctionを作成する:
セッションオプション (9)
"ReturnType" (3)
NodeJSでは,デフォルトの戻り型は"Expression"である:
"Expression"戻り型では,数,文字列,リスト,連想は自動的にインポートされる:
"String"戻り型はJSONを使って文字列を返す:
コマンドオプション (10)
"Command" (4)
"Arguments" (2)
第一引数としてリストを渡す必要がある場合は,追加のリストで明示的にそれをラップする:
"Command"の関数に名前を付け,"Arguments"で直接それを呼び出すことができる:
Ruleを使っても同じ結果を得ることができる:
別の方法としてExternalFunctionを定義するというものがある:
"TemplateArguments" (2)
コマンドを実行するとき,TemplateExpressionを行内に埋め込むことができる:
"TemplateArguments"を使ってTemplateSlotを明示的に埋めることができる:
第一引数としてリストを渡す必要がある場合,それを明示的に追加のリストでラップする:
テンプレートスロットに名前を付け,Associationを使うと,テンプレートに名前付きの引数を渡すことができる:
External Operations (8)
"Eval" (1)
"Call" (3)
NodeJSで関数を作成するExternalOperationを定義する:
ExternalOperation "Call"を実行することによる関数呼出しを定義する:
ExternalEvaluateを使って操作を実行する:
"Call"操作のいずれの引数もExternalOperationにすることができる:
以下のようにして,引数を直接ExternalEvaluateに渡すこともできる:
結果は,以下のNodeJSコードを実行したときと同じになる:
NodeJS関数maxのExternalFunctionを作成する:
The same result can be achieved by doing the following:
NodeJS関数のExternalFunctionを作成する:
ExternalObjectサブ値を使うこともできる:
"GetAttribute" (2)
"Math"オブジェクトのExternalObjectを返す:
"Math"オブジェクトを表すExternalObjectを作成する:
ExternalOperationを使って関数を得る:
ほとんどの評価子では"GetAttribute"がデフォルト操作であり,ExternalOperationは省略できる:
"SetAttribute" (1)
"Cast" (1)
配列を表すExternalObjectを作成する:
"Expression"を使ってオブジェクトをWolfram言語式として返す:
Cast操作もExternalObjectサブ値で実行することができる:
シンボルExpressionは同じことについてのショートカットである:
The symbol String is a shortcut for the same:
オブジェクトをExternalObjectとして返す:
シンボルExternalObjectは同じ操作の近道である:
ExternalEvaluateで"ReturnType"を使っても同じことができる: