Project

General

Profile

Bug #9722

Updated by nobu (Nobuyoshi Nakada) about 10 years ago

I am running ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0] 
 Given the following person class: 

 ~~~ruby 
 class Person 
   attr_reader :name, :age 

   def initialize name:, age: 
     @name = name 
     @age      = age 
   end 
 end 
 ~~~ 

 There are a few cases of unexpected behavior when you instantiate a `Person` Person class given the above code. 

 Failure 1: 

 ~~~ruby 
 person = Person.new(name: "Tom", age: 24) 
 person.name # expect "Tom" 
 => nil 
 person.age # expect 24 
 => 24 
 ~~~ 

 Failure 2:  

 ~~~ruby 
  
 person = Person.new(name: "Tom") # expect ArgumentError missing keyword age 
 person.name  
 => "Tom" 
 person.age  
 => "Tom" 
 ~~~ 

 If I were to just give an `age` age keyword argument instantiation would fail as expected.

Back