RSpecでコードのテストを動かしてみたのですが、二つ目のコードで、キーワード引数の初期値を省略すると、[unexpected ,]のエラーが出力されてしまいます。
試しに、初期値を入力すると、エラーなく、処理が終わります。
調べた結果、Ruby2.1.0から初期値なしのキーワード引数を扱うことが可能になったようですが、私の使っているrubyのバージョンはruby 2.4.0p0です。それなら、初期値なしでも、扱うことができるはずです。
なぜ2.4.0を使っているにも関わらず、キーワード引数に初期値を入力する必要があるのでしょうか?
バージョン
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin15]
RSpec 3.7
- rspec-core 3.7.1
- rspec-expectations 3.7.0
- rspec-mocks 3.7.0
- rspec-support 3.7.1
ruby
1require_relative '../lib/user' 2 3describe User do 4 describe '#greet' do 5 it '12歳以下の場合、ひらがなで答えること' do 6 user = User.new(name: 'たろう', age: 12) 7 expect(user.greet).to eq 'ぼくはたろうだよ。' 8 end 9 it '13歳以上の場合、漢字で答えること' do 10 user = User.new(name: 'たろう', age: 13) 11 expect(user.greet).to eq '僕はたろうです。' 12 end 13 end 14end
ruby
1class User 2 def initialize(name: "miki", age: "10") 3 @name = name 4 @age = age 5 end 6 def greet 7 if @age <= 12 8 "ぼくは#{@name}だよ。" 9 else 10 "僕は#{@name}です。" 11 end 12 end 13end
ruby
1class User 2 def initialize(name:, age:) 3 @name = name 4 @age = age 5 end 6 def greet 7 if @age <= 12 8 "ぼくは#{@name}だよ。" 9 else 10 "僕は#{@name}です。" 11 end 12 end 13end
回答1件
あなたの回答
tips
プレビュー