[JAVA] schéma et jsr223

schémas et objets java


Commentaire hors déclaration

";" C'est-à-dire un point-virgule au début de la ligne


import

Pour l'instant, c'est une bonne idée de déclarer ce qui suit sur la première ligne:

(import type-system) (import oo) (import s2j)


Contrôle de fonctionnement

(display "HelloWorld")

Indique si la sortie vers la console avec


Orientation objet

Fondamentalement, la manipulation d'objets dans les langages orientés objet ne semble pas être dans les spécifications du langage, mais il semble que la plupart des implémentations l'ont séparément. sisc est également préparé car il est implémenté sur JavaVM.

(Nom de l'instance de champ)

Sentiment

Obj en tant qu'instance. Si str comme champ

(str obj)

Se sentir comme ça.

Si l'argument est args dans la méthode,

(str obj args)

Se sentir comme ça.


Objet JSR223

C'est dans le readme de l'interface pour JSR223, mais var est fourni pour l'objet lié.

Par exemple, si vous liez en tant que obj,

(var 'obj)

Se sentir comme ça.

Mais les instances Java sont généralement sensibles à la casse, n'est-ce pas?

Alors Par exemple, si vous liez en tant qu'obj

(var '|Obj|)

Se sentir comme ça.

Donc pour accéder à ce champ str

(str (var '|Obj|))

Cela signifie que.


Nom du champ Java

Au fait, les champs Java sont également sensibles à la casse, hein.

Et si la str précédente était quelque chose comme Str?

Il existe donc des méthodes (ou opérateurs ou commandes) qui résolvent les noms de champs Java.

(generic-java-field-accessor '|Str|)

Se sentir comme ça.

Donc, pour accéder au champ Str de l'objet Obj lié,

(  (generic-java-field-accessor '|Str|)  (var '|Obj|) )

Sera.

Un autre pour les mises à jour sur le terrain 「generic-java-field-modifier」 Pour la méthode 「generic-java-method」 Il y a quelque chose comme


Je souhaite utiliser la valeur d'un nom de champ Java comme données de schéma.

Supposons maintenant un champ Java Boolean appelé IsBool (disons que c'est un champ dans un objet lié appelé Obj) et envisageons de l'utiliser dans le if du schéma.

(  (generic-java-field-accessor '|IsBool|)  (var '|Obj|) )

En l'état, il ne peut pas être utilisé dans shceme, il y a donc quelque chose appelé (-> type target) pour l'utiliser comme un schéma.

(->boolean  (   (generic-java-field--accessor '|IsBool|)   (var '|Obj|)  ) )

Avec ce sentiment, il est devenu possible de l'utiliser dans un schéma, donc si vous le donnez à l'opérateur if, il ressemblera enfin à ceci

(if  (eq?   (->boolean    (     (generic-java-field--accessor '|IsBool|)     (var '|Obj|)    )   )   #t  ) (C'est la vraie formule) (Ceci est une fausse formule) )

Ce sera comme ça.

Recommended Posts

schéma et jsr223
jacl et jsr223
== et égal