Thread Rating:
  • 155 Vote(s) - 2.61 Average
  • 1
  • 2
  • 3
  • 4
  • 5
メソッド呼び出し時のTooFewCallArgumentsの解決方法
02-26-2015, 10:41 AM,
#1
メソッド呼び出し時のTooFewCallArgumentsの解決方法
初めまして。

画面の検索処理を別クラスに移そうとしたところ、検索メソッドの呼び出しで
「'self.logic.search' の呼び出しの引数が少なすぎます。 [TooFewCallArguments]」
というコンパイルエラーが発生しました。
この場所以外でコンパイルエラーは発生していません。

見たところ引数の数と型は合っていそうなのですが、どこを確認するとよさそうでしょうか?
確認した内容は、次の通りです
・引数なしのメソッドも追加して同じ場所で呼び出してみる -> 同じくTooFewCallArgumentsエラー
・InterfaceとSearchLogicのメソッド名を変えてみる -> 変わらず
・引数 output の型を非nullにして {non-null self.rs-result} で渡す -> 変わらず


該当コードは下記の通りですが、他に必要になりそうな箇所がありましたらご指摘ください。
引数なしのメソッドで試してみても同様の構文エラーになるので、どこか別の原因がありそうな感じはするのですが…


【画面クラス】
|| 関係フィールドのみ抜粋
field public rs-result:#RecordSet
field private logic:*****LogicInterface = {*****SearchLogic}
.
.
.
|| 画面の検索処理メソッド
{method package {search}:void
{if-non-null self.rs-result then
{self.rs-result.delete-all}
{self.logic.search(self.tf-code.value, self.tf-name.value, self.rs-result)} || <- ここで構文エラー
}
}

【抽象クラス *****LogicInterface での宣言】
{method public abstract {search code:String, name:String, output:#RecordSet}:void}

【実装クラス *****SearchLogic での定義】
{method public {search code:String, name:String, output:#RecordSet}:void
.
.
.
}
Reply
02-26-2015, 10:56 AM,
#2
RE: メソッド呼び出し時のTooFewCallArgumentsの解決方法
> {self.logic.search(self.tf-code.value, self.tf-name.value, self.rs-result)}

引数の指定に()カッコがついてるのが原因じゃないでしょうか。
Curlの場合は引数の指定は通常、()は付けないです。
なのでこのような呼び出しになります。

{self.logic.search self.tf-code.value, self.tf-name.value, self.rs-result}
Reply
02-26-2015, 11:08 AM,
#3
RE: メソッド呼び出し時のTooFewCallArgumentsの解決方法
() を外したところ、解消されました。
ありがとうございます!
Reply

Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('1205')