Ruby should raise on def(a='a', b) [optional param that can't be used]
Why doesn't Ruby complain when defining a method like this?
def a(opt='opt', required) end
I believe it's impossible to call method 'a' passing only required, while sticking to the default value for 'opt', right? So, why should Ruby allow such definition?
Updated by usa (Usaku NAKAMURA) almost 4 years ago
- Status changed from Open to Rejected
Why did not you try actually?
irb(main):001:0> def a(opt='opt',required) irb(main):002:1> p [opt, required] irb(main):003:1> end => :a irb(main):004:0> a('required') ["opt", "required"] => ["opt", "required"]
Updated by rosenfeld (Rodrigo Rosenfeld Rosas) almost 4 years ago
Oh, thanks. I had no idea on how to try this. I've tried a(, 'required'). Actually, I was reading a method like a(req1, opt='opt', req2) and thought it would be impossible to use the default value, but now I understand how optional arguments work in Ruby. Sorry for the confusion.