2016-11-03 2 views
2

私のようなコードを実装したことに基づいて以下と、ArgumentError:引数の間違った数(1を期待、0を与えられる) - ルビー

#!/usr/bin/env ruby 
begin 
    gem 'minitest', '>= 5.0.0' 
    require 'minitest/autorun' 
    require_relative 'hello_world' 
rescue Gem::LoadError => e 
    puts "\nMissing Dependency:\n#{e.backtrace.first} #{e.message}" 
    puts 'Minitest 5.0 gem must be installed for the xRuby track.' 
rescue LoadError => e 
    puts "\nError:\n#{e.backtrace.first} #{e.message}" 
    puts DATA.read 
    exit 1 
end 

# Test data version: 
# deb225e Implement canonical dataset for scrabble-score problem (#255) 

class HelloWorldTest < Minitest::Test 
    def test_no_name 
    assert_equal 'Hello, World!', HelloWorld.hello() 
    end 

    def test_sample_name 
    assert_equal 'Hello, Alice!', HelloWorld.hello('Alice') 
    end 

    def test_other_sample_name 
    assert_equal 'Hello, Bob!', HelloWorld.hello('Bob') 
    end 
end 

__END__ 

を有するテストスイート(hellow_world_test.rb)を有していました

class HelloWorld 
    def self.hello 
     "Hello, World!" 
    end 

    def self.hello(named) 
     "Hello, #{named}!" 
    end 
end 

そして今、私の2つのテストケースを渡していると、最初のテストケースが

ArgumentError: wrong number of arguments (given 0, expected 1) /Users/vijay/Codes/Ruby/ruby/hello-world/hello_world.rb:7:in hello' hello_world_test.rb:21:in test_no_name'

を返して、以下の何か身体が私にこれを助けることができますか?

答えて

4

Rubyのparamsによるメソッドのオーバーロードはありません。 helloという2番目の定義では、最初の定義を上書きします。とにかく、パラメーターのデフォルト値を使用して1つのメソッドだけで同じ動作を得ることができます。

def self.hello(named = 'World') 
    "Hello, #{named}!" 
end 
関連する問題