Klasika, odsadzovanie vadí hlavne tým, ktorí Python nepoužívajú. :)
Mimochodom, ku Pythonu a F# sa nedávno pridala aj Scala 3. Kód bez zložených zátvoriek vyzerá oveľa lepšie.
package checkbox
import javafx.application.{Application, Platform}
import javafx.event.{ActionEvent, EventHandler}
import javafx.geometry.Insets
import javafx.scene.Scene
import javafx.scene.control.CheckBox
import javafx.scene.layout.StackPane
import javafx.stage.Stage
import javafx.scene.layout.HBox
class CheckBoxApp extends Application {
override def start(stage: Stage): Unit =
stage.setTitle("CheckBox")
val cbox = new CheckBox("Show title")
cbox.setSelected(true)
cbox.setOnAction((_: ActionEvent) => {
if cbox.isSelected() then
stage.setTitle("CheckBox")
else
stage.setTitle("")
})
val root = new HBox
root.setPadding(new Insets(25))
root.getChildren.add(cbox)
stage.setScene(new Scene(root, 400, 300))
stage.show()
}
@main
def main(): Unit =
Application.launch(classOf[CheckBoxApp])
V Scale 3 sú zložené zátvorky voliteľné. Tak nakoniec možno v danom príklade odstrániť všetky zložené zátvorky:
package checkbox
import javafx.application.{Application, Platform}
import javafx.event.{ActionEvent, EventHandler}
import javafx.geometry.Insets
import javafx.scene.Scene
import javafx.scene.control.CheckBox
import javafx.scene.layout.StackPane
import javafx.stage.Stage
import javafx.scene.layout.HBox
class CheckBoxApp extends Application:
override def start(stage: Stage): Unit =
stage.setTitle("CheckBox")
val cbox = new CheckBox("Show title")
cbox.setSelected(true)
cbox.setOnAction((_: ActionEvent) =>
if cbox.isSelected() then
stage.setTitle("CheckBox")
else
stage.setTitle("")
)
val root = new HBox
root.setPadding(new Insets(25))
root.getChildren.add(cbox)
stage.setScene(new Scene(root, 400, 300))
stage.show()
@main
def main(): Unit =
Application.launch(classOf[CheckBoxApp])
Mne to nepripadá neprehľadné, tu to na roote vyzerá (všeobecne) kód horšie , ale v textovom editore je to fajn. Jediné s čím som sa stretol je, že automatické formátovanie kódu je náročnejšie a nefunguje vždy dobre.
F# napríklad má aj verbose syntax, kde sa blok môže ukončiť kľúčovým slovom done, ale rovnomerné odsadenie sa vyžaduje stále.
for n in 2..12 do
printfn "%i" n
printfn "%i" (n * n)
done
for n in 2..12 do
printfn "%i" n
printfn "%i" (n * n)