From: merch-redmine@...
Date: 2019-08-10T22:22:22+00:00
Subject: [ruby-core:94256] [Ruby master Feature#16095] 2 Features: remove (simplify) 'new' keyword and Property Shorthand

Issue #16095 has been updated by jeremyevans0 (Jeremy Evans).


D1mon (Dim F) wrote:
> 1) feature: remove 'new' keyword:
> ``` ruby
> A(1,2) # shorter and more comfortable
> ```

`new` is a method, not a keyword.  You can already get what you want:

```
module Kernel
  private

  def A(arg1, arg2)
    A.new(arg1, arg2)
  end
end
```

Adding constructor methods to `Kernel` for every class would bloat the method namespace.  There are also already cases where a `Kernel` method exists with the same name as a core class but has different behavior (e.g. `Kernel#Hash` vs. `Hash.new`), so this change could not be backwards compatible.


> 2) feature: Property Shorthand (like ES6)

Already requested in #5825 and #15192.

> can also be applied to other types.
> 
> Hash example:
> ``` ruby
> a = 1
> b = 2
> h = {a:a,b:b} # common use
> h = {a,b} # new syntax or {%a,%b} - any syntax of your choice
> ```

Already requested in #15236.


----------------------------------------
Feature #16095: 2 Features: remove (simplify) 'new' keyword and Property Shorthand
https://bugs.ruby-lang.org/issues/16095#change-80571

* Author: D1mon (Dim F)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
**common use:**
``` ruby
class A
  def initialize(arg1, arg2)
    @arg1 = arg1
    @arg2 = arg2
  end
end
A.new(1,2)
```

1) feature: remove 'new' keyword:
``` ruby
A(1,2) # shorter and more comfortable
```


2) feature: Property Shorthand (like ES6)
``` ruby
class A
  def initialize(arg1, arg2)
    # shorter and more comfortable
    @arg1, @arg2
    # or this:
    @arg1
    @arg2
  end
end
```


So as not to duplicate the code (words). May need to do some other syntax or character (:arg1, \^arg1, %arg1, ...)

can also be applied to other types.

Hash example:
``` ruby
a = 1
b = 2
h = {a:a,b:b} # common use
h = {a,b} # new syntax or {%a,%b} - any syntax of your choice
```







-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>