From f771996b927b1bd33e786105efd536d4745af200 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 7 Sep 2021 00:42:35 +0900 Subject: Global_Objects/WebAssembly/Table/set を更新 (#2255) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Markdownへ変換 - 2021/07/21 時点の英語版に同期 --- .../webassembly/table/set/index.html | 99 ---------------------- .../global_objects/webassembly/table/set/index.md | 91 ++++++++++++++++++++ 2 files changed, 91 insertions(+), 99 deletions(-) delete mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.md (limited to 'files/ja/web') diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html deleted file mode 100644 index d2c6e13f4c..0000000000 --- a/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: WebAssembly.Table.prototype.set() -slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set -tags: - - API - - JavaScript - - Method - - Reference - - WebAssembly - - set - - table - - メソッド -translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set ---- -
{{JSRef}}
- -

{{jsxref("WebAssembly.Table")}} オブジェクトの set() プロトタイプメソッドは指定されたインデックスに格納されている参照を違う値に変更します。

- -

構文

- -
table.set(index, value);
-
- -

引数

- -
-
index
-
変更する関数参照のインデックス。
-
value
-
変更する参照。これは エクスポートされた WebAssembly 関数 、 wasm 関数を内在する JavaScript ラッパーである必要があります。
-
- -

返値

- -

なし。

- -

例外

- - - -

- -

次の例では、2つ参照を持つ WebAssembly Table インスタンスを生成しています (table2.html ソースコード動作例 を確認してください) 。それから、長さが2で、関数参照が含まれないこと ({{jsxref("null")}} を返します) を確認するために、テーブルの長さと2つのインデックス ({{jsxref("Global_Objects/WebAssembly/Table/get","Table.prototype.get()")}} を通して読み出して) のコンテンツを表示します。

- -
var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
-console.log(tbl.length);
-console.log(tbl.get(0));
-console.log(tbl.get(1));
- -

次にテーブルの参照を含むインポートオブジェクトを作成します:

- -
var importObj = {
-  js: {
-    tbl:tbl
-  }
-};
- -

最後に、fetchAndInstantiate() ユーティリティ関数を使用して wasm モジュール (table2.wasm) をロードしてインスタンス化します。テーブルの長さを表示して、いまテーブルに格納された(table2.wasm モジュール (テキスト表現 を参照) はテーブルに2つの関数参照を追加し、両方とも、簡単な数値を表示します)2つの関数参照を実行します:

- -
WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject)
-.then(function(obj) {
-  console.log(tbl.length);
-  console.log(tbl.get(0)());
-  console.log(tbl.get(1)());
-});
- -

内部の値を表示するためには、参照された関数のアクセサの呼び出しの後に、2つ目の関数呼び出しを含める必要があることに注意して下さい (get(0) ではなく get(0)())。

- -

この例では、JavaScript からテーブルを作成してアクセスしていますが、wasm インスタンス内で同じテーブルを参照して呼び出すこともできます。

- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('WebAssembly JS', '#dom-table-set', 'set()')}}
- -

ブラウザーの互換性

- -

{{Compat("javascript.builtins.WebAssembly.Table.set")}}

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.md new file mode 100644 index 0000000000..0a30208e6d --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/table/set/index.md @@ -0,0 +1,91 @@ +--- +title: WebAssembly.Table.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set +tags: + - API + - JavaScript + - メソッド + - Reference + - WebAssembly + - set + - table +browser-compat: javascript.builtins.WebAssembly.Table.set +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set +--- +{{JSRef}} + +**`set()`** は {{jsxref("WebAssembly.Table")}} オブジェクトのプロトタイプメソッドで、指定された位置に格納されている参照を別な値に変更します。 + +## 構文 + +```js +set(index, value) +``` + +### 引数 + +- _index_ + - : 変更する関数参照の位置。 +- _value_ + - : 変更する参照。これは[エクスポートされた WebAssembly 関数](/ja/docs/WebAssembly/Exported_functions)、 wasm 関数を内在する JavaScript ラッパーである必要があります。 + +### 返値 + +なし。 + +### 例外 + +- _index_ が {{jsxref("WebAssembly/Table/length","Table.prototype.length")}} 以上の場合、 {{jsxref("RangeError")}} が発生します。 +- _value_ がエクスポートされた WebAssembly 関数でも null でもない場合、{{jsxref("TypeError")}} が発生します。 + +## 例 + +### Table.set の使用 + +次の例 (table2.html の[ソースコード](https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.html)と[動作例](https://mdn.github.io/webassembly-examples/js-api-examples/table2.html)を確認してください) では、初期サイズが参照 2 つである WebAssembly Table インスタンスを生成しています。そして、テーブルの長さと 2 つの位置の内容 ({{jsxref("WebAssembly/Table/get","Table.prototype.get()")}} で取得) を出力して、長さが 2 であること、それぞれの位置には現在、関数の参照が含まれていないこと (現在は {{jsxref("null")}} を返すこと) を示しています。 + +```js +var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"}); +console.log(tbl.length); +console.log(tbl.get(0)); +console.log(tbl.get(1)); +``` + +次に、テーブルの参照を含むインポートオブジェクトを作成します。 + +```js +var importObj = { + js: { + tbl:tbl + } +}; +``` + +最後に、 wasm モジュール (table2.wasm) を {{jsxref("WebAssembly.instantiateStreaming()")}} を使用して読み込みインスタンス化します。テーブルの長さを記録し、テーブルに格納された 2 つの関数参照を呼び出します (table2.wasm モジュール ([テキスト表現]](https://github.com/mdn/webassembly-examples/blob/master/text-format-examples/table2.was)) がテーブルに 2 つの関数の参照を追加し、どちらも単純な表示を表示します)。 + +```js +WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject) +.then(function(obj) { +  console.log(tbl.length); +  console.log(tbl.get(0)()); +  console.log(tbl.get(1)()); +}); +``` + +内部の値を表示するためには、参照された関数のアクセサーの呼び出しの後に、 2 つ目の関数呼び出しを含める必要があることに注意して下さい (`get(0)` ではなく `get(0)()`)。 + +この例では、JavaScript からテーブルを作成してアクセスしていますが、wasm インスタンス内で同じテーブルを参照して呼び出すこともできます。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/en-US/docs/WebAssembly) 概要ページ +- [WebAssembly の概念](/en-US/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/en-US/docs/WebAssembly/Using_the_JavaScript_API) -- cgit v1.2.3-54-g00ecf