Re: `new Foo` vs `new Foo()`

Haoyi Li <[email protected]>
Newsgroups gmane.comp.lang.scala
Message-ID <CALruUQ+7J6v0g4TNu39M=WdSM81bxSr_DAgDqFZSZnjBjR-42g@mail.gmail.com>
> That's the reasoning for case classes, I guess, since a side-effect-free
case class should be a case object.

This doesn't make sense to me. Since when was object allocation considered
side effecting? When people say "avoid side effects", they usually mean you
should allocate *more* objects, not less! Is CaseClass#copy just as
side-effecting as mutating vars?

On Mon, Jul 13, 2015 at 2:13 PM, Adriaan Moors <[email protected]> wrote:

> If we apply the same rule as for methods, you should not add parens unless
> your constructor is side-effecting (which is probably not a great idea in
> itself).
> That's the reasoning for case classes, I guess, since a side-effect-free
> case class should be a case object.
>
> I tend to leave off the empty parens. Their presence should imply
> potential side-effects.
>
> On Mon, Jul 13, 2015 at 1:28 PM, Jon Pretty <[email protected]> wrote:
>
>> I tend to include the parentheses for a couple of reasons: firstly
>> because case classes require the parens, and by association I justify that
>> classes should too, and secondly because instantiating a new instance of a
>> class is side-effecting, so the "method" which does that (i.e. the
>> constructor) should look like a side-effecting method.
>>
>> Additionally, for some reason, I prefer to write `new Foo().bar` rather
>> than `(new Foo).bar`. I think the reason is that I have a slight discomfort
>> at starting an expression with an opening parenthesis, and I've taught
>> myself to give the `new` in `new Foo().bar` higher precedence than the `.`,
>> even though this is counterintuitive to other parsing rules.
>>
>> Jon​
>>
>> On 13 July 2015 at 21:20, Rex Kerr <[email protected]> wrote:
>>
>>> That's the convention I use.  I've seen both with and without parens in
>>> e.g. the Scala library code base.
>>>
>>>   --Rex
>>>
>>> On Mon, Jul 13, 2015 at 12:06 PM, Seth Tisue <[email protected]> wrote:
>>>
>>>> Is there consensus on this? Not sure whether to merge.
>>>>
>>>> https://github.com/scala/scala.github.com/pull/344
>>>>
>>>> Seth
>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "scala-language" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "scala-language" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Jon Pretty | @propensive
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "scala-language" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "scala-language" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "scala-language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.