ページ 11

異なる戻り値の型を持つ関数の実装

Posted: 2013年1月18日(金) 17:13
by Jyonsty
僕は今、Javaで数式計算ライブラリを製作中です。
今、数式を"+" "-" "21" "5^3"といったトークンに分解する機能まで実装し終わって、
その分解したトークンを仕分ける、separateという関数を作成中なのですが、
手始めに

コード:

abstract class Element{}
class Number extends Element{}
class Exponent extends Element{} 
Number calcurate(Number n1,Number n2,char expr){}
Exponent calcurate(Exponent n1,Number n2,char expr){}
Exponent calcurate(Number n1,Exponent n2,char expr){}
Exponent calcurate(Exponent n1,Exponent n2,char expr)
Element separate(String line){
  if(
      /* いろいろな条件分岐  */
                                              )
  return new Number(line);
  else return new Exponent(line);
}
というクラス、関数を作成して、

コード:

String number1;
String number2;
calcurate(separate(number1),separate(number2),'+');
という呼び出しを試したんですけど、
関数の戻り値でElement型にしたせいか、例外が出てしまいます。
どのように実装をかえればいいですか?

Re: 異なる戻り値の型を持つ関数の実装

Posted: 2013年1月18日(金) 17:20
by Blue
separateの戻り値がElementで、
calcurateの引数がExponentなのがまずいんじゃないですかね?

コード:

Exponent calcurate(Element n1,Number n2,char expr){}
Exponent calcurate(Element n1,Exponent n2,char expr){}
Exponent calcurate(Element n1,Element n2,char expr)
って風にすればうまくいくかな?
Exponentじゃなきゃだめならだめだけど。