値ブロックは、出力接続があるブロックです。これらは値( テキストベースの言語で記述します。

Blockly のすべてのブロックと同様に、次の方法で値ブロックをコード文字列に変換できます。 ブロックコード ジェネレータを定義します。

import {javascriptGenerator, Order} from 'blockly/javascript';

javascriptGenerator.forBlock['custom_block'] = function(block, generator) {
  // Collect argument strings.
  const fieldValue = block.getFieldValue('MY_FIELD');
  const innerCode = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

  // Return code.
  return ['my code string', Order.NONE];
}

引数文字列を収集する

すべてのブロックコード生成ツールでは、 フィールドの値を収集し、 作成します

// Collect field values.
const fieldValue = block.getFieldValue('MY_FIELD');

// Collect inner block code strings.
const innerCode = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

内部ブロックのコードを複数回参照する場合は、 引数のキャッシュ保存をブロックに追加します。

戻りコード

値ブロック コード ジェネレータの戻り値の型は配列で、最初の 値はコード文字列で、2 番目の値は優先度です。

return ['my code string', Order.NONE];

優先順位は、ブロックコードの文字列をかっこで囲むタイミングを制御します。 詳しくは、かっこのドキュメントをご覧ください。 かっこを追加するタイミングを制御する方法。