欄位是產生程式碼的重要部分,因為 例如字串、數字和顏色 (等等)。
如要在產生的程式碼中加入欄位值,就必須取得欄位值, 將其轉換為可用的字串,然後使用 其餘部分
import {javascriptGenerator} from 'blockly/javascript';
javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
// Get the field value.
const fieldValue = block.getFieldValue('MY_FIELD');
// Concatenate the code.
const code = `some code ${fieldValue} some more code`;
// Return the code.
return code;
}
取得值
您可以使用 getFieldValue
存取欄位值。可獲得的好處
都會與欄位不同,因此最好檢查內建
欄位。適用對象
舉例來說,文字輸入欄位會傳回使用者輸入的確切文字,但下拉式選單
欄位會傳回與使用者項目相關聯的語言中立字串
已選取。
轉換值
大多數的欄位值都已準備就緒,可立即串連至程式碼字串。 不過,部分欄位值需要另外處理,才能使用。
字串
字串必須先以代碼產生器引用,才能串連。
// For a single line text field.
const str = generator.quote_(block.getFieldValue('STR'));
// For a multiline text field.
const str = generator.multiline_quote_(block.getFieldValue('STR'));
變數
變數名稱必須由程式碼產生器清除,才能產生變數名稱 串連。這麼做有兩個必要原因:
- 使用者可使用自己選擇的語言輸入變數。也就是說
可能要轉換為 ASCII 字元例如「
متغير
」會 轉換為「_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
」。 - 變數可能會與保留字詞相衝突。也就是說,
以免發生衝突例如「
for
」會轉換為 「for2
」。
const identifier = generator.getVariableName(block.getFieldValue('VAR'));
串連程式碼
取得欄位值並將其轉換為字串後, 使用程式碼字串串連正確位置。
const code = `some code ${value} some more code`;
傳回碼
不同類型的區塊需要在不同的區塊中傳回程式碼字串 因此,建議您個別查看他們的網頁瞭解詳情: