Один из подходов может быть таким:
1) Создайте файл CSS с именем «style.css» и определите в нем селектор id:
blockquote>#pane{ -fx-background-image: url("background_image.jpg"); -fx-background-repeat: stretch; -fx-background-size: 900 506; -fx-background-position: center center; -fx-effect: dropshadow(three-pass-box, black, 30, 0.5, 0, 0); }
2) Установите идентификатор самого верхнего элемента управления (или любого элемента управления) в сцене со значением, определенным в CSS, и загрузите этот файл CSS в сцену:
public class Test extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { StackPane root = new StackPane(); root.setId("pane"); Scene scene = new Scene(root, 300, 250); scene.getStylesheets().addAll(this.getClass().getResource("style.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } }
Вы также может указывать идентификатор элемента управления в файле FXML:
Для получения дополнительной информации о стилях CSS JavaFX см. это руководство .
Так что я думаю, что нашел довольно хорошее решение. Каналы используются для определения конструкторов, первый - пустой случай, когда x
- пустой список, а второй - для всех остальных.
fun test (i, []) = false
| test (i,x) = if hd x = i then true else test(i, tl x)
Вот более короткая версия:
fun test (_, []) = false
| test (i, x::xs) = (x = i) orelse test (i, xs)
Вот что я сделал:
Используйте сопоставление с образцом. В вашем втором решении вы уже сопоставляете шаблон с пустым списком, так что это продвигает его дальше и сопоставляет шаблон с непустым списком (x::xs
), что делает ненужным использование hd
и tl
.
Используйте шаблон _
, когда вам не нужно значение.
Вместо if P then true else Q
напишите P orelse Q
.
Скобки вокруг x = i
не являются строго необходимыми. Это выглядит немного запутанным с двумя различными =
рядом друг с другом (один происходит из определения функции, а другой - двоичный оператор), но это также совершенно верно и означает то же самое:
Или отступить немного удобнее:
fun test (_, []) = false
| test (i, x::xs) =
x = i orelse test (i, xs)