Difference between method and function.
oop
15
fp
1
White

Lê Minh Tuấn viết ngày 22/10/2015

1.Method (phương thức) và Function(hàm) có gì khác nhau ?

  • Chúng ta thường hiểu rằng Method chính là Function và ngược lại, điều này có đúng không?

=> Trả lời:

  • Nếu hiểu Method và Function là hai khái niệm giống nhau thì bạn đã sai rùi đó nha!
  • Method và function là hai khái niệm hoàn toàn khác nhau.(khác nhau như nào?)
  • Tuy cho dù là method hay là function thì chúng đều là vài ba dòng code để xử lý một công việc nhỏ, nhưng cách hoạt động bên trong chúng lại khác nhau đó.

Những điểm khác nhau

  1. Về cái tên

    • Tất nhiên rùi, nó khác nhau về tên, một cái là Method một cái là Function nghe cũng thấy khác nhau, nhìn cũng thấy khác nhau, nhưng cái tên chả quan trọng lắm, mà cái chính là mấy ông tạo ra các ngôn ngữ lập trình muốn nhắn nhủ chúng ta rằng: chúng là khác nhau đấy, không giống nhau đâu à nha!.
  2. Về sự tồn tại

    • Khái niệm Methods chỉ tồn tại trong OOP (object orented programming) còn Funtion chỉ tồn tại trong FP (functional programming). Trong Java(OOP) chúng ta không có function mà chỉ có methods, trong C (FP) chẳng hạn (tớ chả biết gì về C) thì người ta chỉ gọi là function thôi thì phải.
    • Method phải viết trong một Class (tất nhiên, thế cũng nói) còn Function thì viết ở đâu cũng được (miễn là có chỗ viết).
    • Method thuộc về một Object còn Function chả thuộc về ai (độc lập với Object).
  3. Về cách hoạt động (Cái này hay nhất luôn).
    Đối với method

    • Tất cả dữ liệu (các tham số) được truyền (pass) cho method là không tường minh(implicitly). Ngoài những tham số bạn truyền cho method bạn còn truyền theo cả chính object đó:
    • EX:
Class MyClass
  def myMethod(int x){
   this.x = x
}

  • Khi gọi
myObj = MyClass.new
myObj.myMethod (10)

  • lúc này bạn đã ngầm truyền chính object hiện tại vào method đó:
myObj = MyClass.new
myObj.myMethod(myobject, 10) //myObj.myMethod(10)
  • Đó là lý do tại sao chúng ta có thể dùng con trỏ this, self trong một class. và một method cũng có thể sử dụng những tài nguyên khác ngoài những tham số truyền cho nó, đó là những tài nguyên của class.

Đối với function

  • Mọi thứ truyền vào Function là tường minh (explicitly), function chỉ có thể sử dụng dữ liệu là chính những parameter truyền cho nó.

Demo với JavaScript

var myObj = {
  name: "hello",
  age: 11,

  talk: function(text){
    console.log(text)
    console.log(this.age)
  }

}

var talk = function(text){
  console.log("text")
}

myObj.talk("hello")

talk("hi")
  • myObj.talk() : Method (ngoài những biến được truyền vào ta còn ngầm truyền vào object myObj cho method này vì thế ta có thể sử dụng các tài nguyên khác của class như age, name thông qua con trỏ this)
  • talk() : Function (Chỉ thao tác đc với những biến truyền vào ) alt text

Kết quả

alt text

`Thank you guys

  • Please give me some feedbacks or leave a comment.
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lê Minh Tuấn

11 bài viết.
22 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
15 2
1. Maven là gì? 2. Maven hoạt động như nào? 3. Tại Sao cần Maven? 4. Cài đặt Maven 5. Khởi tạo một Project Java bằng Maven 6. Cấu trúc POM.xml...
Lê Minh Tuấn viết hơn 2 năm trước
15 2
White
15 8
(Ảnh) 1. Elasticsearch là gì ??? 2. ElasticSearch dùng cho những ứng dụng nào ??? 3. Vấn đề : Hiện nay tất cả các hệ thống thông tin (hay c...
Lê Minh Tuấn viết hơn 2 năm trước
15 8
White
11 0
(Ảnh) 1. Software design pattern là gì ? 2. Có bắt buộc phải sử dụng design pattern khi lập trình ? 3. Có bao nhiêu design pattern ? 5. Bà...
Lê Minh Tuấn viết hơn 2 năm trước
11 0
Bài viết liên quan
White
0 0
Clojure là ngôn ngữ functional có hỗ trợ OOP. Về mặt khoa học máy tính, có nhiều cách để thực hiện đa hình. Ở phiên bản trước 1.2, đa hình trong Cl...
Ngoc Dao viết gần 2 năm trước
0 0
White
2 1
Đó là: Chạy trong chế độ interactive Chạy trực tiếp bằng lệnh scala (chế độ thông dịch) Compile thành file .class rồi chạy như cách chạy của Jav...
Ngoc Dao viết gần 2 năm trước
2 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
11 bài viết.
22 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!