JML

2010-12-06 6 views
3

におけるリターンで私はsize_ iはJMLでそれを行うことができますどのようにJML

if(size_ == 0) 
    return null; 

に基づいて0の場合はnullを返すことが保証事後条件を設定する必要が声明場合は?何か案は?動作しない、次のとおりです。

//@ ensures size_ == null ==> \result == true; 
public boolean sizeUndefined() { 
    if (size_ == null) 
     return true; 

    return size_.length() > 0; 
} 

あなたは、単にこのようにそれを書くことができます::事前に

//@ ensures size_ == null ==> \return true; 

おかげ

答えて

4

//@ ensures size_ == null ==> \result == true; 

例み

//@ ensures size_ == null ==> \result; 
ここ

the documentation for \resultある:

3.2.14 \result
正常事後条件又は非ボイド方法の変形標的内の、特別な識別子\結果は、そのタイプのリターンである指定式でありますメソッドの型。このメソッドによって返された値を示します。 \ resultは、void以外のメソッドの宣言を変更するプラグマのensure、also_ensures、modifies、またはalso_modifiesプラグマ内でのみ許可されます。すべての

+0

は私が言っている厥だろう。 OPが「もしかしたら」の代わりにしようとしているように聞こえたので、私はそれを言った。もう混乱がないことを願っています。 –

+0

ああ、そうだ。私は彼が "特別なコメント"でコードを置き換えることができると彼は考えています。 – aioobe

+0

混乱はOPによって提示されたスニペットから来ました。彼/彼女がJMLコメント付きのメソッドを表示していれば、すべてがうまくいっているはずです。詳細な回答は –

1

まず:size_Objectまたはprimitive(int)でどのタイプ?

第2に、メソッドの戻り値の型は何ですか? Objectまたはprimitive(boolean)

プリミティブ型をnullと比較することはできません。プリミティブ型が返されると考えられるnullを返すことはできません。我々はsize_intであると仮定し、リターンがbooleanであれば、事後条件は

//@ ensures size_ == 0 ==> \result; 
関連する問題