2011-01-30 4 views
47

В чем разница между методом и функцией? Это значит, что метод возвращает значение, а функция - нет?В чем разница между методом и функцией?

+1

Там действительно нет никакой технической разницы в PHP. Но, на мой взгляд, функция - более математическая вещь; он не изменяет состояние, возвращает только значение (например, f (x) = 2x).Метод изменяет состояние (например, выводит «привет мир») и может возвращать значение. Это в основном обман: http://stackoverflow.com/questions/43777/method-vs-message-vs-function-vs Надеюсь, это ответ на ваш вопрос. – Tyler

+0

Функция имеет смысл в большинстве языков программирования, не связанных с ее значением в математике. –

ответ

127

Метод Фактически функция используется в контексте класса/объекта.

При создании функции вне класса/объекта, вы можете назвать это функцией но при создании функции внутри класса, вы можете назвать это методом.

class foo { 
    public function bar() { // a method 
    ........ 
    } 
} 

function bar() { // a function not part of an object 
} 

Таким образом, объект может иметь методы (функции) и свойства (переменные).

+1

Это очень хороший ответ, очень ясный. Благодарю. – Ben

+4

Методы должны быть вызваны так '$ this-> bar()' если внутри этого класса, в противном случае вы должны сначала создать экземпляр класса, а затем вызвать его с помощью экземпляра класса (объекта), например: '$ foo-> bar() '. Для функций это просто 'bar()'. – knownasilya

+0

Вы узнаете что-то новое каждый день. –

0

В одной строке метод является функцией, но функция не обязательно является методом. Разница заключается в том, что метод используется для описания функций, определенных в классах, которые используются с экземплярами этих классов.

package {class Example { 
    public function iAmAMethod():void { 
    addEventListener("listenerFunctionIsNotAMethod", function(event:Event):void { 
     trace("inline function, yay!"); 
    }); 
    } 

}

5

Разница между выражениями «метод» и «функции» является то, что «метод» является функцией членом класса, в то время как автономная функция не делает, и автономной функции, как правило, существует в глобальном контексте.

2

Оба используются взаимозаменяемо, но функция - это терминология, используемая в структурных языках, а метод - это терминология, используемая в объектно-ориентированных лангауагах. Также существуют методы внутри объектов, в то время как функции могут существовать и без объектов.

6

Слова не противоречат друг другу, а скорее описывают два возможных аспекта подпрограммы. Попытка определить слова следует следующим образом:

Подпрограмма: Набор инструкций, которые можно использовать несколько раз в одной программе.

Подпрограмма, возвращающая значение. Выведено из функций по математике (wikipedia).

Способ: Подпрограмма, принадлежащая к объекту или классу. Может быть функцией.

Я обычно использую слово «функция» для каждой подпрограммы, которая не имеет побочных эффектов, но возвращает одно чистое значение и слово «метод» для каждой подпрограммы, которая имеет побочный эффект.

+0

Это определения подпрограммы и функции, используемые в Fortran, одном из первых языков высокого уровня. Это было очень давно. Я не могу думать о современном языке, который использует «подпрограмму» в качестве ключевого слова. В языке C используется «функция» для обоих, и именно так используется большинство других языков. (У вас все в порядке для метода.) –

+0

Но вопрос ничего не говорит о ключевых словах. Это терминологический вопрос о том, как описать код на разговорном языке. Я могу порекомендовать статью wikipedia http://en.wikipedia.org/wiki/Subroutine – Jonatan

+0

@MarcRochkind Не работает (Visual Basic), определяя функции с помощью ключевого слова 'Sub'? – Byson

2

Функция - это общий термин, который будет использоваться в процедурном программировании, где Метод - это термин, который будет использоваться в объектно-ориентированном программировании для определения свойства класса.

1

Определит метод внутри класса, мы определяем ВНЕ стороны класса, функция не является частью класса

Смежные вопросы