From: shevegen@... Date: 2017-06-03T16:39:15+00:00 Subject: [ruby-core:81564] [Ruby trunk Feature#13630] :[] method should accept block in nice syntax Issue #13630 has been updated by shevegen (Robert A. Heiler). I agree. I always wondered about this too. I did not make a suggestion like this because I suspect that one reason may be a parser issue, as otherwise it would most likely have been done already. In particular for elements without any arguments like: Bam.[] { |b| puts b } Or more verbose to use your example: module Bam def self.[](bam=42) yield bam end end Bam.[] { |b| puts b } # => 42 Bam[] { |b| puts b } # => SyntaxError: (irb):14: syntax error, unexpected { arg, expecting end-of-input Only difference here between failure and success is one lonely '.'. I am not sure if it is technically possible to get rid of the '.', but if it would be possible, that would be great. The '.' visually disturbs me when I see [] ... but not at other places, it's weird. :D ---------------------------------------- Feature #13630: :[] method should accept block in nice syntax https://bugs.ruby-lang.org/issues/13630#change-65266 * Author: khoan (khoa nguyen) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- ~~~ ruby # given module Bam def self.[](bam) yield bam end end # SyntaxError: unexpected keyword_do_block Bam['bam'] do |b| puts b end # SyntaxError: unexpected { arg, expecting end-of-input Bam['bam'] { |b| puts b } # Valid but more verbose Bam.[]('bam') do |b| puts b end Bam.[]('bam') { |b| puts b } ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: