2016-09-19 7 views
-3

У меня есть две функции, которые я не могу сказать, чисты они или нет.Являются ли эти функции чистыми или нечистыми?

Это первый из них.

someFunction(ref input1, ref input2) { 
    input2 = input1 + input2 
    return input2 
} 

Я считаю, что его нечистая функция, потому что она допускает изменчивость ввода2. Но почему это проблема? Мы не можем получить доступ к вводу2 вне функции, поэтому я не понимаю, почему это имеет значение, если оно мутировано или нет.

Вот моя вторая функция.

someFunction(ref input1, ref input2) { 
    return input1 + input2 
} 

Опять же, я думаю, что это нечистая функция, потому что она пропускает input1 и input2 по ссылке. Но опять же, я не понимаю, почему это проблема. Мы не изменяем input1 или input2 ... поэтому почему эта функция нечиста?

+0

«Мы не можем получить доступ к вводу2 вне функции« Что вы имеете в виду? – AndyG

+4

Это не C++. - – Quentin

+0

Этот код намеревается быть C++ или нет? Это даже близко не компилируемый код. –

ответ

0

Посмотрите на Pure_Function.

Ваш первый метод имеет побочные эффекты (он меняет input2). -> нечистый

Второй чистый, никаких побочных эффектов (и другие правила не нарушаются).