前のパートに戻る 完了して次のパートへ  

  1-2 パラメータの設定

こちらでは、勇者クラスにパラメータを設定できるようにしていきます。後に続くパラメータの取得と同様、大切になってきますのでよく理解しながら進めてみてください。

勇者にはnamehpoffensedefenseの3つのパラメータが存在します。まずは、それらのパラメータに値を設定できるようにしましょう。その際に定義するのは「セッター」です。セッターとは、インスタンス変数の値をクラス内で更新するためのメソッドです。そのセッターで、引数で受け取った値をインスタンス変数に代入します。

セッターを用いて値を更新するときはbrave.name = テリーのように=を用いて値を代入します。そのため、メソッドを定義する際にもメソッド名=の形で定義する必要があります。こうすることにより、brave.name = テリーという記述でHPに対するセッターを呼び出すことができるようになります。

それでは実際にセッターを経由して値が設定できるか確かめてみましょう。まずは以下のようにコードを追記してください。

コードの追記が終わったら、main.rbのあるディレクトリまでcdコマンドを使ってターミナルで移動してください。その後、以下のコマンドを入力してプログラムを実行します。

$ ruby main.rb

実行後、何もエラーが出なければきちんとパラメータの値が設定できています。

エラーが出た場合は、何行目でエラーが出ているのか?エラー内容はなんと書かれているのか?その意味を考えたり、英語がわからなければ調べたりしながら進めてください。

ちなみに、今回のサンプルで出そうなエラーの例を載せておきます。

main.rb:23:in `<main>': undefined method `defense=' for #<Brave:0x00007f95f4839258 @hp=500, @offense=150> (NoMethodError)
Did you mean?  defense

こちらのエラーはundefined methodという一文からも分かる通り、defense=というメソッドが定義されていないことを示しています。よくコードを見てみると、Braveクラスにおいてdefenseメソッドの=が抜けているのが分かるかと思います。

そのため、以下の行で値の設定ができずエラーとなりました。

こちらのエラーを解決するには、defenseメソッドを以下のように修正してあげれば大丈夫です。

その後、プログラムを実行し、エラーが解決されることを確認してみましょう。

このように、エラーが発生した場合はどの行でどのようなエラーが表示され、それに関連する部分はどこで、関連しない部分はどこなのかを切り分けていく必要があります。

エンジニアの仕事はエラー解決なので、ただサンプルコードと見比べて間違い探しをするのではなく、今回のように自分で考えて当たりをつけ、その精度をあげるように意識してみて下さい。その思考回路を鍛えることによって、どんどん自分でエラーを解決する力が身についていきます。

それでは、続きをどんどんやっていきましょう。

議論

1 質問

このコースの評価は?