Je voudrais fixer une valeur x
à une gamme [a, b]
:
x = (x < a) ? a : ((x > b) ? b : x);
C'est assez basique. Mais je ne vois pas de fonction "clamp" dans la bibliothèque de classes - en tout cas pas dans System.Math
.
(Pour l'inconscient, "brider" une valeur consiste à s'assurer qu'elle se situe entre certaines valeurs maximales et minimales. Si elle est supérieure à la valeur maximale, elle est remplacée par la valeur maximale, etc.)
2 votes
@Danvil : Il n'y a pas de "bibliothèque de classes C#". Vous voulez dire "The .NET Framework".
1 votes
Toujours rien à partir de C# 7.1 ?
2 votes
@JohnSaunders Je ne crois pas que ce soit strictement vrai. stackoverflow.com/questions/807880/
0 votes
Si je demandais comment "limiter" une valeur, chaque programmeur anglophone dans le monde saurait immédiatement ce que je veux dire. Très probablement, tous les programmeurs le sauraient. Après plus de 30 ans dans le métier, j'ai dû aller chercher ce que signifiait "clamp" aujourd'hui. Comme pour l'"injection de dépendance", le "paramétrage" est une chose tellement évidente que personne n'a jamais écrit de livre à ce sujet.
1 votes
@Bob Certains mots ont une signification historique, bien définie. Clamp est l'un d'entre eux. fr.wikipedia.org/wiki/Clamping_(graphisme) o khronos.org/registry/OpenGL-Refpages/gl4/html/clamp.xhtml o docs.microsoft.com/fr/us/Windows/win32/direct3dhlsl/ "Limite" serait trompeur, d'autant plus que "limite" a déjà une autre signification en mathématiques.
0 votes
@lkaalus. "Serrer" quelque chose, c'est le maintenir en un point. "Limiter" quelque chose, c'est le restreindre à une plage. La limite mathématique est la limite d'une fonction lorsqu'une variable liée tend vers une valeur - la fnc a une plage qui dépend de la plage de la variable. "Clamp" est utilisé ici pour signifier ce qui est défini par "limite". Celui qui l'a défini comme tel (ur links) s'est trompé à l'époque et quiconque reprend son sens ne fait qu'exacerber la situation - comme la majeure partie de l'élément le plus bruyant/tendance de l'industrie informatique a l'habitude de faire avec à peu près tout ce que dit un "leader d'opinion".
0 votes
Pour une fonction "restreignant" une valeur à une plage, "limit", "restrict", "confine", "regulate", "constrain", "govern" et "restrain" seraient tous des choix raisonnables et intuitifs. Je suis sûr qu'il y en a d'autres. "Clamp" est un très mauvais choix : non seulement il ne décrit pas ce que fait la FNC, mais il décrit quelque chose que la FNC ne fait pas (sauf cas particulier), à moins que, comme c'est le cas ici, vous n'ayez accepté que ce terme signifie désormais quelque chose qu'il n'a jamais signifié auparavant : un peu comme si vous décidiez que lorsque nous utilisons le mot "Aardvark" dans le contexte de notre sujet particulier, nous faisons en fait référence à un "Elephant".
0 votes
Il est maintenant ajouté à .NET 5.0.