J'ai ce code:
if (force == true) App.selectedPhrases = null;
App.selectedPhrases = App.selectedPhrases ?? App.DB.GetSelectedPhrases();
Je ne comprends pas vraiment l'utilisation de ?? mais je suppose que cela dit si le App.selectedPhrases est nul, alors obtenez de nouvelles phrases et utilisez autrement l'existant.
Ma fonction a aussi une option force donc ce que j'ai fait a été d'utiliser cette ligne:
if (force == true) App.selectedPhrases = null;
Y a-t-il un moyen de combiner ces deux lignes:
public List<Phrase> GetViewablePhrases(MO mode, int pts = 0, bool force = false)
{
if (force == true) App.selectedPhrases = null;
App.selectedPhrases = App.selectedPhrases ?? App.DB.GetSelectedPhrases();
4 Réponses :
Même si ce qui suit résoudra ce que vous voulez, je suis d'accord avec Jon sur la lisibilité comme vous devriez aller avec sa réponse.
Une façon est d'utiliser la opérateur ternaire :
App.selectedPhrases = (force ? null : App.selectedPhrases) ?? App.DB.GetSelectedPhrases();
Quant au ? ? opérateur :
Le ?? L'opérateur est appelé l'opérateur de fusion nul. Elle renvoie l'opérande de gauche si l'opérande n'est pas nul; sinon, il renvoie l'opérande de droite.
Une manière possible:
App.selectedPhrases = (force || App.selectedPhrases == null) ? App.DB.GetSelectedPhrases() : App.selectedPhrases;
Et qu'est-ce que App.selectedPhrases est nul? Dans votre version, le résultat sera nul alors que dans la question il ne le sera pas
J'utiliserais ce code
if (force || App.selectedPhrases == null) {
App.selectedPhrases = App.DB.GetSelectedPhrases();
}
return App.selectedPhrases;
// edit: oh @rad était plus rapide que moi
Je me concentrerais sur la lisibilité: vous voulez obtenir de nouvelles phrases si soit force est vrai ou nous n'en avons pas pour le moment:
if (force || App.selectedPhrases == null)
{
App.selectedPhrases = App.DB.GetSelectedPhrases();
}
J'ai également voté à la hausse pour cette réponse, mais ne pensez-vous pas que c'est un peu résistant aux fonctionnalités telles que les opérateurs conditionnels ternaires ou nuls?
@rad: Non, absolument pas. Lorsque vous souhaitez inconditionnellement effectuer une action, mais avec une valeur calculée de manière conditionnelle, alors l'opérateur conditionnel?: Et l'opérateur de fusion nul sont utiles. Là où vous voulez conditionnellement prendre une action, une instruction if est la manière la plus naturelle d'exprimer cela, IMO.
App.selectedPhrases = (force? Null: App.selectedPhrases) ?? App.DB.GetSelectedPhrases ();