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

Reply via email to