Pola stanowią ważną część generowania kodu, ponieważ definiują wartości, które użytkownik może edytować, np. ciągi znaków, liczby czy kolory.
Uwzględnianie wartości pól w wygenerowanym kodzie wymaga pobrania wartości pola, jest przekształcany w odpowiedni ciąg znaków, a następnie łączy go ze znakiem reszty kodu.
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;
}
Pobierz wartości
Wartości pól można uzyskać za pomocą narzędzia getFieldValue
. Korzyści
jest różne w zależności od pola, więc sprawdź wbudowany
dokumentację z informacjami o konkretnym polu. Dla:
Na przykład pola do wprowadzania tekstu zwracają dokładnie taki tekst, jaki został wpisany przez użytkownika,
pola zwracają ciąg znaków neutralny dla języka powiązanego z elementem użytkownika.
zaznaczono.
Przekształcanie wartości
Większość wartości pól jest gotowa do natychmiastowego połączenia z ciągiem kodu. Jednak niektóre wartości pól wymagają wykonania dodatkowych czynności, zanim będzie można ich użyć.
Strings
Generator kodu musi zacytować ciągi znaków, zanim będzie można je połączyć.
// 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'));
Zmienne
Generator kodu musi wyczyścić nazwy zmiennych, zanim będzie można je utworzyć połączone. Jest to konieczne z dwóch powodów:
- Zmienne wprowadza użytkownik w wybranym języku. Oznacza to, że
może wymagać skonwertowania na znaki ASCII. Na przykład: „
متغير
” będzie zostaną przekształcone na „_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
”. - Zmienne mogą powodować konflikt ze słowami zarezerwowanymi. Oznacza to, że być może będą musieli
zmodyfikowane, by nie kolidowały ze sobą. Na przykład: „
for
” zostanie skonwertowana na „for2
”.
const identifier = generator.getVariableName(block.getFieldValue('VAR'));
Połącz kod
Po pobraniu wartości pola i przekonwertowaniu jej na ciąg znaków możesz połącz go w odpowiednim miejscu z ciągiem kodu.
const code = `some code ${value} some more code`;
Kod zwrotu
Różne typy bloków wymagają, aby ciąg kodu był zwracany w różnych , zapoznaj się więc z informacjami o poszczególnych stronach: