You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi all, maybe all ppl with some experience on R, would know is not easy to debug or work with a language where there is no checks on types, or where we can do some weird things like NA + 1 = NA.
There is several challenge aspects in order write good code, and this to be used correctly, like, no one send some trash to the param of a function.
Some time ago, I found the library "typed", which give us the chance to check when a var changes it is still a valid one, or when passing a param to a function.
The "typed" lib, give us the chance to create or own assertions, I think would be great have them for sfnetworks, I have created this one:
typed_sfnetworks<-typed::as_assertion_factory(function(value, null_ok=FALSE) {
if (null_ok&& is.null(value)) return(NULL)
if (!sfnetworks::is.sfnetwork(value)){
e<- sprintf(
"%s\n%s",
"type mismatch",
waldo::compare(
typeof(value),
"sfnetworks",
x_arg="typeof(value)",
y_arg="expected"))
stop(e, call.=FALSE)
}
value
})
To use is very simple:
library(typed)
typed_sfnetworks() ? x#For vars#This will throw an errorx<-sf::st_read("network.gpkg")
#This will worksx<-sf::st_read("network.gpkg") %.>%
sfnetworks::as_sfnetwork(., directed=FALSE)
#For paramsf<- ? function(network= ? typed_sfnetworks()) {
network %.>% sfnetworks::active(., "nodes") %.>% sf::st_as_sf(.)
}
I think would be great have a sfnetworks::typed_sfnetwork or similar inside the package, to use this checks on libs who uses sfnetworks.
Thx!
The text was updated successfully, but these errors were encountered:
Hi all, maybe all ppl with some experience on R, would know is not easy to debug or work with a language where there is no checks on types, or where we can do some weird things like NA + 1 = NA.
There is several challenge aspects in order write good code, and this to be used correctly, like, no one send some trash to the param of a function.
Some time ago, I found the library "typed", which give us the chance to check when a var changes it is still a valid one, or when passing a param to a function.
The "typed" lib, give us the chance to create or own assertions, I think would be great have them for sfnetworks, I have created this one:
To use is very simple:
I think would be great have a
sfnetworks::typed_sfnetwork
or similar inside the package, to use this checks on libs who uses sfnetworks.Thx!
The text was updated successfully, but these errors were encountered: