SML более короткий синтаксис базового регистра для моей функции

Один из подходов может быть таким:

1) Создайте файл CSS с именем «style.css» и определите в нем селектор id:

#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); 
}
blockquote>

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 см. это руководство .

0
задан Travis M 18 January 2019 в 04:50
поделиться

2 ответа

Так что я думаю, что нашел довольно хорошее решение. Каналы используются для определения конструкторов, первый - пустой случай, когда x - пустой список, а второй - для всех остальных.

fun test (i, []) = false
  | test (i,x)  = if hd x = i then true else test(i, tl x)
0
ответ дан Travis M 18 January 2019 в 04:50
поделиться

Вот более короткая версия:

fun test (_, []) = false
  | test (i, x::xs) = (x = i) orelse test (i, xs)

Вот что я сделал:

  1. Используйте сопоставление с образцом. В вашем втором решении вы уже сопоставляете шаблон с пустым списком, так что это продвигает его дальше и сопоставляет шаблон с непустым списком (x::xs), что делает ненужным использование hd и tl.

  2. Используйте шаблон _, когда вам не нужно значение.

  3. Вместо if P then true else Q напишите P orelse Q.

Скобки вокруг x = i не являются строго необходимыми. Это выглядит немного запутанным с двумя различными = рядом друг с другом (один происходит из определения функции, а другой - двоичный оператор), но это также совершенно верно и означает то же самое:

[111 ]

Или отступить немного удобнее:

fun test (_, []) = false
  | test (i, x::xs) =
      x = i orelse test (i, xs)
0
ответ дан Simon Shine 18 January 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: