Je n'ai pas trouvé d'implémentation de ces types (pratiques) dans R, donc j'ai créé le mien. J'espère que cela ne sera pas considéré comme une publicité, parce que je pense sincèrement que c'est une caractéristique très importante qui manque à R, et pour d'autres personnes partageant cette pensée, cela peut être utile.
MISE À JOUR: maintenant disponible sous forme de package sur github et sur CRAN.
Quickstart:
Une variable en option peut être réglée sur some(object)
ou none
.
a <- some(5)
class(a)
## [1] "optional"
Les opérateurs et l'impression auront le même comportement avec une option qu'avec son type de base.
a == 5
## [1] TRUE
a
## [1] 5
Notez que some(some(obj))
égal some(obj)
et que some(none)
égal FALSE
.
Pour faire une fonction existante accepte optionals comme arguments et revenir aussi une option, on peut utiliser make_opt()
:
c_opt <- make_opt(c)
c_opt(some(2), none, some(5))
## [1] 2 5
c_opt()
## [1] "None"
partie Bonus: Je forme également introduit correspondant de langages fonctionnels , avec match_with
:
match_with(variable,
pattern , result-function,
...
Ceci est destiné à être utilisé avec Magrittr
package si vous souhaitez obtenir une syntaxe aussi proche que la match with
fonctionnelle:
a <- 5
match_with(a,
. %>% some(.), print,
none, function() print("Error!")
)
Vouliez-vous dire que les méthodes S3? – Suren