On 6/2/25 17:37, Josiah Parry wrote:
Tomas,
Here is a good example of where this functionality would be useful:
https://github.com/R-ArcGIS/arcgislayers/blob/2b29f4c254e7e5a1dadce8d4b0015a70dfae39d4/R/arc-open.R#L19-L56
In order to prevent R CMD check notes I have to use `paste0()` to
concatenate long URLs. If we were able to use `\` to
separate the string across multiple lines, it would make the solution
much nicer!
It may be a matter of taste. To me the current form
#' furl <- paste0(
#' "https://services3.arcgis.com/ZvidGQkLaDJxRSJ2/arcgis/rest/services/",
#' "PLACES_LocalData_for_BetterHealth/FeatureServer/0"
#' )
#'
would be actually clearer than say this:
#' # FeatureLayer
#' furl <-
"https://services3.arcgis.com/ZvidGQkLaDJxRSJ2/arcgis/rest/services/\
PLACES_LocalData_for_BetterHealth/FeatureServer/0"
#'
Inside a per-line comment (#), a backslash followed by a newline would
probably be disallowed, anyway - e.g. in C it is considered dangerous
and is discouraged. And the code resulting from splices is hard to read
due to missing indentation. There is also risk of accidentally putting a
space after the backslash before the end of line (which some
languages/parsers then don't treat as a splice, some do, some issue a
warning - of course it is hard to see in the code).
The idea of automatically concatenating consecutive string literals as
in C would not easily work in R. This is now valid R code:
x <- "part1"
"part2"
if we introduced concatenation, we would change behavior of this code
(the value of x would be different, the result of these two lines would
be different).
I think paste0() is not that bad in the end.
Best
Tomas
On Mon, Jun 2, 2025 at 3:19 AM Tomas Kalibera
<tomas.kalib...@gmail.com> wrote:
On 5/28/25 04:15, Pavel Krivitsky via R-devel wrote:
> Dear All,
>
> Perhaps this should go in r-package-devel, but I suspect that
this is
> going to turn into a feature request, and I want to run it by
the list
> before filing it in the Bugzilla.
>
> I would like to specify a long string literal without making the
line
> of code too long. In R,
>
> "abc
> def"
>
> yields the string "abc\def", and, as far as I can tell, there is no
> mechanism for preventing it from inserting a newline into the
string.
>
> Putting a backslash before the newline, i.e.,
>
> "abc\
> def"
>
> eliminates the newline in (that I know of) C/C++, Python, and Julia,
> but it makes no difference in R.
>
> The implicit concatenation of Python and C/C++, e.g., "abc"
"def", is a
> syntax error as well in R.
>
> It is, of course, possible to use paste0(), but is there a more
concise
> built-in mechanism in R of which I am not aware?
>
> If not, I think it would make sense to bring R in line with the
others.
> Currently, backslash and no backslash before a newline behave
> identically (at least as far as I can tell), so I doubt that a
> nontrivial amount of code relies on the current behaviour. [1]
What would be real example of a long string literal you would want to
enter this way?
For entering a long text with newlines, one can use raw strings in R
(see ?Quotes) - but there you would see the newlines and indentation.
I've seen code where "paste0" has been aliased to a local function
named with a single letter to make concatenation more concise.
Best
Tomas
>
> Any thoughts?
> Pavel
>
> [1] On the off chance that it does, it should easy to check by
> searching for "\\\n" in package sources, because a backslash
before a
> newline is a syntax error outside a string.
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel