在Java中,所有这些方法都被认为是纯函数吗



此程序确定用户输入的字符串是否为回文。

import acm.program.ConsoleProgram;

公共类PureParindrome扩展控制台程序{

public void run() {
    String originalString;
    String reversedString;
    boolean isPalindrome;
    originalString = readLine("? ");
    reversedString = reverseString(originalString);
    isPalindrome = checkPalindrome(originalString, reversedString);
    println("The word you entered " + determineWord(isPalindrome)
            + " a palindrome. " + originalString + " reversed is: "
            + reversedString + ".");
}
private boolean checkPalindrome(String word, String revWord) {
    if (revWord.equals(word)) {
        return true;
    } else {
        return false;
    }
}
private String reverseString(String wordToReverse) {
    String reversedWord = "";
    for (int i = 0; i < wordToReverse.length(); i++) {
        reversedWord = wordToReverse.charAt(i) + reversedWord;
    }
    return reversedWord;
}
private String determineWord(boolean palindrome) {
    if (palindrome) {
        return "is";
    } else {
        return "is not";
    }
}

}

所有这些方法都被认为是纯函数吗?如果没有,为什么不呢?我在判断一个方法是否是纯函数时遇到了一些麻烦。

如果一个方法的返回值完全取决于它的参数,而不取决于其他任何东西,并且它没有任何副作用,那么它就是一个纯函数。

因此,后三种方法是纯函数,而第一种方法不是:它不返回任何内容,取决于用户输入,并且具有在屏幕上打印的副作用。

旁注:

if (revWord.equals(word)) {
    return true;
} else {
    return false;
}

应该被取代

return revWord.equals(word);

相关内容

  • 没有找到相关文章

最新更新