0

一連の数値の平均、最大、最小、標準偏差を計算する関数を作成しようとしています。

UIColor関数のように機能させたい-(void)getRed:green:blue:alpha。つまり、4つのfloat値を渡すと、関数はそれらを上書きします。

正しい構文を見つけるのに苦労しています。

私の機能は...

- (void)calculateStatsAverage:(float)average
            standardDeviation:(float)standardDeviation
                      minimum:(float)minimum
                      maximum:(float)maximum
{
    //pseudo code
    average = total / count;
    minimum = min value;
    etc...
    //
}

私が得ている問題は、値を再び取得することです。

float *(UIColor関数が行うこと)を使用するように関数を変更した場合、私の計算では変数を割り当てるのが好きではありません。

単純化するために...

これらの関数を想像してみてください。最初のものは他の場所から呼び出されます。

- (void)runThisFunction
{
    float someOutputValue = 0.0;

    [self changeTheValue:someOutputValue];

    NSLog(@"The value is %f", someOutputValue);
}

- (void)changeTheValue:(float)value
{
    value = 10.0;
}

このコードで「値は10.0」を出力したいのですが。しかし、現時点では「値は0.0」です。

この2つの関数の書き方を教えてください。そこから私は残りを解決することができるでしょう。

ありがとう

4

2 に答える 2

2
- (void)passByRefMethod:(float *)ptr
{
    *ptr = MYVALUE;
}

フォーマットして申し訳ありませんが、電話で入力しました。お役に立てれば!

この手法は参照渡しと呼ばれることが多く、C の一部であるため、それを使用して詳細情報を検索できます。

于 2012-08-31T11:37:35.753 に答える
0

NSLog は、0.0 に割り当てられたローカル変数「someOutputValue」の値を表示しています。

「changeTheValue」メソッドは効果がありません。

次のコードが役立つ場合があります。

- (void)runThisFunction
{
    float someOutputValue = 0.0;

    float resultOfCalc = [self calcTheValue:someOutputValue];

    NSLog(@"The value is %f", resultOfCalc);
}

- (float) changeTheValue:(float)value // note that this method returns a float
{
    float newValue;

    // do whatever calc is appropriate, e.g.

    newValue = value + 10.0;

    return newValue;  // pass back the result of calc
}

これは出力されます、

The value is 10.
于 2012-08-31T11:42:02.760 に答える