Function la gi
Written by on November 29, 2019 Show
iOS & Swift
Nghe qua câu hỏi từ tiêu đề bài viết thì …
Vô lý vì nó tưởng chừng như cái hiển nhiên, ai cũng biết là ai rồi. Thuyết phục vì cái gì cũng cần phải định nghĩa được. Có bao giờ bạn tự hỏi.
Vâng, chào bạn tới với Fx Studio. Bài viết này sẽ giúp bạn giải thích 1 phần các câu hỏi vô lý trên. Nếu vô tình bạn đi phỏng vấn một công ty nào đó, mà người phỏng vấn hỏi bạn. Thì bạn vẫn có thể tự tin đáp trả.
Chuẩn bị
1. Funtion là gì?
Trong đó:
Quan trọng
Cú pháp
Đó là cú pháp đơn giản nhất để khai báo 1 function. Tuỳ thuộc vào từng ngôn ngữ lập trình mà sẽ có cách khai báo và từ khoá khác nhau. Ví dụ với Swift là func. 2. Các dạng function phổ biếnTham khảo sơ đồ trên thì chúng ta có thể phân loại các dạng function cơ bản, mà bất cứ ngôn ngữ lập trình nào cũng có. Có thể bạn đã làm qua hết, nhưng đôi lúc ngồi hệ thống lại thì cũng khá thú vị. 2.1. Public & Private functionĐây chính là phạm vi truy cập tới cho function. Nếu bạn muốn các class khác không dùng được thì sử dụng private. Còn với public thì bên ngoài sẽ gọi được nó. 2.2. Tham sốFunction còn được chia ra 2 dạng cơ bản nữa:
Với có tham số thì sẽ được chia ra 2 loại cơ bản tiếp theo:
2.3. Giá trị trả vềCũng đươc chia ra thành 2 loại cơ bản:
Từ khoá được sử dụng chính là return. Khi chạy tới return thì function sẽ kết thúc. 2.4. Gọi hàmSự kết hợp giữa 2 yếu tố trên là tham số và giá trị trả về. Và cũng chia ra 2 dạng cơ bản:
Giá trị trả về của function này chính là giá trị cho tham số của function khác. Function có thể gọi trực tiếp từ việc truyền giá trị cho tham số của function khác. 3. Tham số và đối số?Chắc bạn cũng nhiều lần hay hằng nghe tới 2 từ khoá tham số và đối số, hay parameter và argument. Hoặc nhiều lúc phát biểu thì một cách vô thức. Và có lúc nào bạn sẽ thắc mắc …
Giải thích:
Ta lấy ví dụ cho nhanh hiểu được Trong đó:
Tiếp theo Trong đó:
Dễ hiểu hơn nữa, thì chúng ta có thể truyền trực tiếp giá trị vào tham số của function. 4. Function và MethodĐây cũng là một trong những khái niệm khá là đau não . Vì theo cách diễn giải của người Việt mình thì …
Khi thế giới lập trình còn sơ khai, kỉ nguyên của hướng đối tượng chưa ra đời. Thì chỉ có các function. Nó được sinh ra với mục đích nhóm các đoạn code lại với nhau, để thực thi một tác vụ nào đó. Mục đích xâu xa của nó là tận dụng lại mã nguồn của chương trình. Và rồi khi Hướng đối tượng được khai sinh. Mọi thứ thay đổi từ đây, function nó không phải là thứ duy nhất được tái sử dụng. Và yêu cầu đối với nó càng ngày càng cao hơn. Nên Method được ra đời. Method là function có liên quan đến một kiểu dữ liệu nhất định nào đó (class, struct, enum). Phân loại cho Method:
Để cho dễ hiểu hơn nữa, thì function viết trong 1 class sẽ có 2 kiểu
Tham khảo code bên Swift xem nó như thế nào 😎 Tạm thời chúng ta đi qua sơ lượt hết các khái niệm và phân loại function trong lập trình. Có thế thiếu nhiều điều nhưng hi vọng đó cũng đủ cho bạn có 1 cái nhìn hình dung cụ thể function là gì. Bây giờ, chúng ta sang ngôn ngữ lập trình Swift, xem function trong nó có cái gì hay. Tiếp tục thôi! 5. Đặc trưng của Swift5.1. Cú pháp functionTham khảo đoạn code sau: Trong đó:
5.2. Trả về nhiều giá trịBài toán, tìm min và max của một mãng số nguyên Sử dụng let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) print("min is \(bounds.min) and max is \(bounds.max)")Với Swift, thì chúng ta có thể trả về nhiều giá trị một lúc trong 1 lời gọi hàm. Thực chất chúng là kiểu Tuple, nó nhóm các kiểu giá trị lại vào nhau. Mang tính chất nhất thời, không có tính kế thừa, không cần phải khai báo. 5.3. Argument Labels và Parameter NamesCách truyền thống với tham số Nhưng Swift thừa hưởng lại từ Objective-C. Và chúng ta có thêm 1 cách nữa với Argument Labels. func someFunction(argumentLabel parameterName: Int) { // In the function body, parameterName refers to the argument value // for that parameter. }Nó giúp cho việc gọi hàm được tường minh. Đây là đặc trưng riêng của Swift. Ví dụ: func greet(person: String, from hometown: String) -> String { return "Hello \(person)! Glad you could visit from \(hometown)." } print(greet(person: "Bill", from: "Cupertino"))Nhưng nhiều bạn vẫn mang trong mình định kiến của các ngôn ngữ khác khi học iOS hay Swift. Và Apple cũng khá chịu chơi khi cho Swift có thể linh hoạt. Để bỏ đi hết các Argument Label hay Parameter Names thì bạn hãy dùng tới dấu _ trước các tham số. func add(_ a: Int, _ b: Int) -> Int { return a + b } let number1 = 10 let number2 = 87 print(add(number1,number2)) add(25, 76)
Tóm tắt chút:
5.4. In-Out Parametersvar a = 10 print("Before a = \(a)") func change(a: Int) { a = a + 1 } change(a: a) print("After a = \(a)")Với đoạn code trên, thì chúng ta không thay đổi giá trị của a, các tham số trong function sẽ được hiểu là hằng số (let). Vậy muốn cho nó có thể thay đổi giá trị của chính tham số thì sử dụng từ khoá inout. Tiếp var a = 10 print("Before a = \(a)") func change(a: inout Int) { a = a + 1 } change(a: &a) print("After a = \(a)")Chú ý:
5.5. Function TypeKhai báo 1 function cho vui nào, Tiếp tục khai báo thêm 1 biến, var mathFunction: (Int, Int) -> Int = addTwoIntsTrong đó:
Sử dụng biến mathFunction để thực thi với 2 đối số cho nó. Với ví dụ trên thì ta thấy, để phân biệt các function khác nhau thì sẽ thông qua
Các yếu tố như tên tham số, tên function đều không có ý nghĩa. Để hiểu hơn thì bạn có thể tham khảo bài viết sau:
5.6. Function trong functionChúng ta tham khảo tiếp
1 đoạn code sau Điều kì diệu là trong function thì chúng ta vẫn có thể khai báo thêm function được nữa. Đó gọi là nested function. Mục đích:
5.7. Không còn returnĐây là điểm mới nhất với Swift 5.1 Với function chỉ có 1 line duy nhất thì bạn có thể bỏ đi từ khoá return.
Tạm kết
Cảm ơn bạn đã theo dõi bài viết này! Written by chuotfxHãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe! |