Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

spaces around the Arrow Operator (->)

by jjmoka (Beadle)
on Mar 07, 2016 at 16:52 UTC ( [id://1157020]=perlquestion: print w/replies, xml ) Need Help??

jjmoka has asked for the wisdom of the Perl Monks concerning the following question:

I received comments to not use spaces around ->

ex.:

$a  ->  {'k'}

or

$a -> method ()

where is the hidden side effect to use whitespaces there ?? (besides some editors syntax highlighting failure on that)

Replies are listed 'Best First'.
Re: spaces around the Arrow Operator (->)
by AnomalousMonk (Archbishop) on Mar 07, 2016 at 17:07 UTC
    ... around -> ... where is the hidden side effect to use whitespaces there ??

    Nowhere. It's purely a layout/formatting/readability issue. I myself would have no objection to a block of code like

    $w ->{'foo' } = ...; $xx ->{'boff' } = ...; $yyy ->{$j } = ...; $zzzz->{fun($n)} = ...;
    and often write stuff like that. OTOH, I would strongly object to something like
        my $v = $hr -> {w} -> {x} -> {y} -> {z};
    simply because I can't read it! I hate "exploded" code unless it's in the context of multiple rows of expressions with the same or similar columnar organization.


    Give a man a fish:  <%-{-{-{-<

Re: spaces around the Arrow Operator (->)
by choroba (Cardinal) on Mar 07, 2016 at 17:03 UTC
    There's no difference,
    only a personal preference.

    My personal preference is no spaces around the arrow, and I guess that's what the majority does, too, even in C++. At work, though, I'm often confronted with code that has a tab on the left hand side of the arrow, and a space on the right hand side.

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
Re: spaces around the Arrow Operator (->)
by davido (Cardinal) on Mar 08, 2016 at 04:02 UTC

    It's not a syntactic limitation, it's one of style and convention. The convention seems to be not putting space around the arrow operator. However, there are times where it's appropriate. Have a look at Test::Mojo for an example of where using a little whitespace with the arrow operator turns out to be quite elegant (for some values of elegant).

    Here is a preview...

    $t->websocket_ok('/echo') ->send_ok('hello') ->message_ok ->message_is('echo: hello') ->finish_ok;

    This works because many object methods in the Mojolicious world return a reference to their object instance, so you can chain calls one after the other in that fashion.

    About the only other time that I'll add whitespace around a -> operator is when it makes most sense to break a long line there:

    my $value = decode_json($json) ->{'foo'}[0]{'bar'};

    That's a contrived example, but occasionally putting a line break at the first arrow improves readability.


    Dave

      Great nice breath at the Monastery. Thank you all.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1157020]
Approved by Paladin
Front-paged by Tanktalus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2024-03-28 08:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found