Twitter sagt, dass Scala kein rohes, ungeschminktes, flüchtiges Feld ausstrahlen kann. Wahr?

8

Die feine Twitter-util-Bibliothek hat die folgende Java-Klasse, die um eine Scala-Klasse erweitert wird, die das flüchtige Feld liest und es mit AtomicReferenceFieldUpdater aktualisiert. Der Zugriff muss mindestens privat sein, d. H. Anderen Status zulassen.

Stimmt der Motivationsanspruch im Kommentar? Wie wahr? ("Wie" bedeutet in welcher Weise und in welchem ​​Maße.)

%Vor%     
som-snytt 19.09.2012, 00:32
quelle

1 Antwort

14

Etwas wie das Folgende funktioniert.

Wenn Sie das Feld "privat [this]" machen, wird es zur gewünschten Feldreferenz ("getfield").

Der Zugriff von einer anderen Instanz erfolgt über einen Accessor "state ()", der, wenn er @inline gemacht wird, die Zugriffsbeschränkung auf das Feld lockern wird.

Das bedeutet auch, dass der Updater (der sich zufällig im Begleitmodul befindet) ebenfalls darauf zugreifen kann.

(Da der normale Zugriffsmechanismus für die Variable nicht für ein Objekt-privates Element ausgegeben wird, können Sie eigene definieren, indem Sie parens verwenden. Sie müssen jedoch nicht an der Aufruf-Site, dem other.state, Parens verwenden Zugang Prinzip Dollar bei der Arbeit. Oder Schweizer Franken.)

Bemerken Sie auch die total hip Verwendung von 'new' in Backticks für einen Parameternamen. Ich weiß nicht, wie man die Ticks in diesem Markup erscheinen lässt. Da beide Params vom selben Typ sind, möchte man wahrscheinlich cas(expect=prev, 'new'=changed) schreiben, also hätte ich vielleicht stattdessen next verwendet, aber wenn dieses Markup einen Hipster-Daumen hoch unterstützt, würde ich es sofort geben. : +1: Hat es funktioniert? Kann jemand meinen Daumen sehen? [Ich glaube, ich habe das auf GitHub gesehen. Hubster, nicht Hipster.]

%Vor%

Zeigen Sie, dass state () wirklich inline ist:

%Vor%

Es ist nicht nur "OK, eigene Fragen zu stellen und zu beantworten",

Ссылка

es ist unendlich befriedigender.

(Mehr Macht für Daniel Sobral, Rex Kerr, Retronym und den Rest der Justice League.)

    
som-snytt 19.09.2012, 00:32
quelle

Tags und Links