Trong Swift4, các phương thức là các hàm được liên kết với một kiểu cụ thể. Trong Objective-C, các lớp được sử dụng để định nghĩa các phương thức trong khi trong Swift4, chúng ta có các phương thức cho Lớp, Cấu trúc và Kiểu liệt kê.
Giới thiệu về phương thức trong Swift 4
Trong Swift 4, phương thức là một khối mã được định nghĩa để thực hiện một tác vụ cụ thể hoặc một hành động trên một đối tượng cụ thể. Phương thức là một phần quan trọng trong việc tổ chức mã và xử lý logic trong Swift.
Một phương thức trong Swift 4 được định nghĩa bên trong một lớp, cấu trúc hoặc một đối tượng. Nó có thể được gọi để thực hiện một tác vụ hoặc truy xuất thông tin từ đối tượng chứa nó.
Phương thức trong Swift 4 có thể nhận các tham số đầu vào và trả về một giá trị nếu cần thiết. Chúng cũng có thể có một hoặc nhiều tham số mặc định để giúp việc sử dụng phương thức dễ dàng hơn.
Ngoài ra, trong Swift 4, chúng ta cũng có thể định nghĩa phương thức tĩnh (static methods) mà không cần tạo một thể hiện của lớp hoặc đối tượng. Phương thức tĩnh có thể được gọi trực tiếp từ lớp hoặc đối tượng chứa nó.
Một trong những tính năng mạnh mẽ của Swift 4 là khả năng sử dụng phương thức mở rộng (extension methods). Điều này cho phép chúng ta thêm các phương thức mới vào một lớp hoặc đối tượng đã tồn tại mà không cần phải thay đổi mã nguồn gốc.
Phương thức trong Swift 4 giúp chúng ta tổ chức mã một cách rõ ràng và linh hoạt, tăng tính tái sử dụng và giúp giảm sự trùng lặp mã. Điều này cải thiện khả năng bảo trì và phát triển ứng dụng, đồng thời tạo ra mã nguồn dễ đọc và dễ hiểu.
Xem thêm Tự học HTML: HTML ngữ nghĩa(semantic)
Cú pháp phương thức
Cú pháp để định nghĩa một phương thức trong Swift 4 như sau:
class MyClass { func methodName(parameter1: Type1, parameter2: Type2) -> ReturnType { // Mã thực hiện phương thức return value // Giá trị trả về (nếu có) } }
Trong đó:
class MyClass
là lớp hoặc cấu trúc chứa phương thức.func
là từ khóa để định nghĩa một phương thức.methodName
là tên của phương thức.parameter1
,parameter2
là các tham số đầu vào của phương thức, mỗi tham số được định nghĩa với tên và kiểu dữ liệu của nó.Type1
,Type2
là kiểu dữ liệu của các tham số đầu vào.ReturnType
là kiểu dữ liệu của giá trị trả về (nếu có).- Mã thực hiện phương thức được đặt bên trong cặp dấu ngoặc nhọn
{}
. return value
là lệnh trả về giá trị từ phương thức (nếu có giá trị trả về). Thông qua lệnhreturn
, chúng ta có thể trả về kết quả và kết thúc phương thức.
Chúng ta có thể gọi phương thức bằng cách sử dụng tên của đối tượng hoặc thể hiện của lớp, cấu trúc chứa phương thức, và sau đó sử dụng dấu chấm .
để gọi phương thức theo cú pháp:
let myObject = MyClass() myObject.methodName(parameter1: value1, parameter2: value2)
Trên đây là cú pháp cơ bản để định nghĩa và gọi một phương thức trong Swift 4.
Tham số và giá trị trả về
Trong Swift 4, phương thức có thể nhận tham số đầu vào và trả về một giá trị nếu cần thiết. Tham số đầu vào được sử dụng để truyền dữ liệu vào phương thức và giá trị trả về là kết quả mà phương thức trả về sau khi hoàn thành công việc của nó. Dưới đây là chi tiết về tham số và giá trị trả về trong phương thức.
Tham số đầu vào (Parameters):
Trong khai báo phương thức, chúng ta có thể định nghĩa các tham số đầu vào bằng cách liệt kê chúng sau tên phương thức và đặt kiểu dữ liệu cho từng tham số. Cú pháp như sau:
func methodName(parameter1: Type1, parameter2: Type2) { // Mã thực hiện phương thức }
Ví dụ, đây là một phương thức có hai tham số đầu vào:
func greet(name: String, age: Int) { print("Xin chào, tôi là \(name) và tôi \(age) tuổi.") }
Trong ví dụ trên, name
và age
là hai tham số đầu vào của phương thức greet
.
Giá trị trả về (Return Value):
Một phương thức có thể trả về một giá trị sau khi thực hiện xong công việc của nó. Để khai báo kiểu dữ liệu của giá trị trả về, chúng ta sử dụng từ khóa ->
sau danh sách tham số và đặt kiểu dữ liệu mong muốn của giá trị trả về. Cú pháp như sau:
func methodName(parameter1: Type1, parameter2: Type2) -> ReturnType { // Mã thực hiện phương thức return value // Giá trị trả về }
Ví dụ, đây là một phương thức trả về một giá trị kiểu Int
:
func sum(a: Int, b: Int) -> Int { return a + b }
Trong ví dụ trên, phương thức sum
trả về tổng của hai số a
và b
dưới dạng một giá trị kiểu Int
.
Khi gọi một phương thức có giá trị trả về, chúng ta có thể sử dụng kết quả trả về đó để thực hiện các thao tác khác trong mã:
let result = sum(a: 5, b: 3) print("Tổng là: \(result)") // Kết quả: Tổng là: 8
Trên đây là cách sử dụng tham số và giá trị trả về trong phương thức của Swift
Xem thêm Redirect là gì?
Phạm vi và truy cập phương thức
Trong Swift 4, phạm vi và truy cập phương thức xác định khả năng của các phương thức được truy cập và sử dụng trong mã của chúng ta. Dưới đây là các cấp độ phạm vi và các quyền truy cập phương thức trong Swift:
Phạm vi (Scope):
Phạm vi xác định vị trí mà một phương thức có thể được truy cập và sử dụng trong mã. Có ba cấp độ phạm vi chính trong Swift 4:
- Public: Các phương thức công khai (
public
) có thể được truy cập từ mọi nơi, bao gồm cả bên ngoài module (được sử dụng trong module hiện tại và các module khác). - Internal: Các phương thức trong phạm vi nội bộ (
internal
) có thể được truy cập và sử dụng trong cùng một module. Đây là phạm vi mặc định khi không có từ khóa phạm vi được xác định. - Private: Các phương thức riêng tư (
private
) chỉ có thể được truy cập và sử dụng trong cùng một tệp (file) chứa phương thức đó. Chúng không thể được truy cập từ các tệp khác trong cùng module.
Truy cập (Access):
Quyền truy cập xác định quyền hạn mà một phương thức có đối với các phần tử khác trong cùng phạm vi. Có năm quyền truy cập chính trong Swift 4:
- Public: Các phương thức công khai (
public
) có thể được truy cập và kế thừa từ bất kỳ đâu, bao gồm cả bên ngoài module. - Internal: Các phương thức nội bộ (
internal
) có thể được truy cập và kế thừa trong cùng một module. - Private: Các phương thức riêng tư (
private
) chỉ có thể được truy cập từ bên trong cùng một tệp chứa phương thức đó. - Fileprivate: Các phương thức riêng tư trong tệp (
fileprivate
) có thể được truy cập từ bất kỳ đâu trong cùng một tệp. - Open: Các phương thức mở (
open
) tương tự nhưpublic
, nhưng còn cho phép kế thừa và sử dụng lại ở các module khác.
Để xác định phạm vi và quyền truy cập của phương thức, chúng ta có thể sử dụng các từ khóa public
, internal
, private
, fileprivate
và open
trước khai báo phương thức.
Xem thêm Internet có nghĩa là gì?
Phương thức khởi tạo
Trong Swift 4, phương thức khởi tạo (initializer) là một phương thức đặc biệt được sử dụng để tạo ra một thể hiện (instance) của một lớp hoặc cấu trúc. Phương thức khởi tạo được gọi khi ta khởi tạo một đối tượng mới từ lớp hoặc cấu trúc đó. Dưới đây là cú pháp và các khía cạnh quan trọng về phương thức khởi tạo trong Swift:
Cú pháp phương thức khởi tạo:
Cú pháp để định nghĩa một phương thức khởi tạo trong Swift 4 như sau:
class ClassName { init(parameters) { // Mã thực hiện khởi tạo } }
Trong đó:
init
là từ khóa để định nghĩa một phương thức khởi tạo.parameters
là danh sách các tham số đầu vào của phương thức khởi tạo. Mỗi tham số được định nghĩa với tên và kiểu dữ liệu của nó.
Ví dụ, dưới đây là một phương thức khởi tạo đơn giản cho một lớp Person
trong Swift:
class Person { let name: String let age: Int init(name: String, age: Int) { self.name = name self.age = age } }
Trong ví dụ trên, phương thức khởi tạo init
có hai tham số name
và age
. Mã thực hiện gán giá trị của các tham số vào thuộc tính name
và age
tương ứng của lớp.
Gọi phương thức khởi tạo:
Để khởi tạo một thể hiện của lớp hoặc cấu trúc, chúng ta sử dụng cú pháp sau:
let object = ClassName(parameters)
Ví dụ, để khởi tạo một đối tượng Person
:
let person = Person(name: "John", age: 25)
Trong ví dụ trên, chúng ta tạo một đối tượng person
từ lớp Person
với tên là “John” và tuổi là 25.
Phương thức khởi tạo tùy chọn (Optional initializer):
Trong Swift, chúng ta có thể định nghĩa phương thức khởi tạo tùy chọn (optional initializer) cho lớp hoặc cấu trúc. Phương thức khởi tạo tùy chọn cho phép ta khởi tạo một đối tượng với một tập hợp con của các tham số hoặc giá trị thuộc tính.
Cú pháp để định nghĩa một phương thức khởi tạo tùy chọn trong Swift 4 như sau:
init?(parameters) { // Mã thực hiện phương thức khởi tạo // Kiểm tra các giá trị đầu vào và trả về nil nếu không hợp lệ }
Trong đó:
init
là từ khóa để định nghĩa một phương thức khởi tạo.parameters
là danh sách các tham số đầu vào của phương thức khởi tạo. Mỗi tham số được định nghĩa với tên và kiểu dữ liệu của nó.?
sau từ khóainit
cho biết rằng phương thức khởi tạo có thể trả về giá trịnil
.
Xem thêm Hàm khởi tạo(constructor) là gì?
Phương thức tĩnh
Trong Swift 4, phương thức tĩnh (static method) là một phương thức thuộc về lớp hoặc cấu trúc chứ không thuộc về một thể hiện cụ thể của lớp hoặc cấu trúc đó. Điều này có nghĩa là chúng ta có thể gọi phương thức tĩnh mà không cần khởi tạo một thể hiện của lớp hoặc cấu trúc đó. Dưới đây là cú pháp và các điểm quan trọng liên quan đến phương thức tĩnh trong Swift:
Cú pháp phương thức tĩnh:
Cú pháp để định nghĩa một phương thức tĩnh trong Swift 4 như sau:
class ClassName { static func methodName(parameters) { // Mã thực hiện phương thức } }
Trong đó:
static
là từ khóa để định nghĩa một phương thức tĩnh.methodName
là tên của phương thức tĩnh.parameters
là danh sách các tham số đầu vào của phương thức tĩnh. Mỗi tham số được định nghĩa với tên và kiểu dữ liệu của nó.
Ví dụ, dưới đây là một phương thức tĩnh đơn giản để tính tổng hai số:
class MathUtils { static func sum(a: Int, b: Int) -> Int { return a + b } }
Trong ví dụ trên, phương thức tĩnh sum
nhận hai tham số a
và b
và trả về tổng của chúng.
Gọi phương thức tĩnh:
Để gọi phương thức tĩnh, chúng ta sử dụng tên của lớp hoặc cấu trúc, theo sau là dấu chấm .
và tên của phương thức tĩnh:
ClassName.methodName(parameters)
Ví dụ, để gọi phương thức tĩnh sum
của lớp MathUtils
:
let result = MathUtils.sum(a: 5, b: 3) print("Tổng là: \(result)") // Kết quả: Tổng là: 8
Trong ví dụ trên, chúng ta gọi phương thức tĩnh sum
từ lớp MathUtils
để tính tổng của hai số 5 và 3.
Lưu ý rằng phương thức tĩnh chỉ có thể truy cập và sử dụng các thành viên tĩnh khác của lớp hoặc cấu trúc, và không thể truy cập các thuộc tính hoặc phương thức không tĩnh.
Xem thêm Tham số hàm Swift và giá trị trả về
Phương thức nạp chồng (overloading)
Trong Swift 4, phương thức nạp chồng (method overloading) cho phép chúng ta định nghĩa nhiều phương thức có cùng tên nhưng có các tham số khác nhau. Điều này giúp cho chúng ta có thể sử dụng cùng tên phương thức để thực hiện các tác vụ khác nhau dựa trên loại và số lượng tham số đầu vào. Dưới đây là cú pháp và các điểm quan trọng về phương thức nạp chồng trong Swift:
Cú pháp phương thức nạp chồng:
Để định nghĩa một phương thức nạp chồng, chúng ta sử dụng cùng tên cho các phương thức khác nhau và khác nhau về số lượng hoặc kiểu dữ liệu của tham số đầu vào. Cú pháp như sau:
class ClassName { func methodName(parameter1: Type1) { // Mã thực hiện phương thức } func methodName(parameter2: Type2) { // Mã thực hiện phương thức } }
Trong đó:
methodName
là tên của phương thức.parameter1
,parameter2
là các tham số đầu vào của các phương thức khác nhau.Type1
,Type2
là kiểu dữ liệu tương ứng của các tham số.
Ví dụ, dưới đây là một ví dụ về phương thức nạp chồng sum
trong lớp MathUtils
:
class MathUtils { func sum(a: Int, b: Int) -> Int { return a + b } func sum(a: Double, b: Double) -> Double { return a + b } }
Trong ví dụ trên, chúng ta có hai phương thức sum
với cùng tên nhưng khác nhau về kiểu dữ liệu của tham số đầu vào. Phương thức đầu tiên nhận hai tham số kiểu Int
và trả về một giá trị kiểu Int
. Phương thức thứ hai nhận hai tham số kiểu Double
và trả về một giá trị kiểu Double
.
Gọi phương thức nạp chồng:
Khi gọi một phương thức nạp chồng, trình biên dịch sẽ dựa vào số lượng và kiểu dữ liệu của các tham số để xác định phương thức cụ thể được gọi. Chúng ta có thể gọi phương thức nạp chồng như sau:
let result1 = object.methodName(parameter1) let result2 = object.methodName(parameter2)
Xem thêm Swift Enumerations/ Swift Enum
Phương thức mở rộng (extension)
Trong Swift 4, phương thức mở rộng (extension methods) cho phép chúng ta mở rộng chức năng của một lớp, cấu trúc, hoặc kiểu dữ liệu khác mà không cần phải sửa đổi mã nguồn ban đầu của chúng. Điều này giúp chúng ta thêm các phương thức mới vào một kiểu dữ liệu mà không cần thay đổi mã nguồn gốc của kiểu đó. Dưới đây là cú pháp và các điểm quan trọng liên quan đến phương thức mở rộng trong Swift:
Cú pháp phương thức mở rộng:
Cú pháp để định nghĩa một phương thức mở rộng trong Swift 4 như sau:
extension TypeName { func methodName(parameters) { // Mã thực hiện phương thức } }
Trong đó:
extension
là từ khóa để định nghĩa phương thức mở rộng.TypeName
là tên của lớp, cấu trúc, hoặc kiểu dữ liệu mà chúng ta muốn mở rộng.methodName
là tên của phương thức mở rộng.parameters
là danh sách các tham số đầu vào của phương thức mở rộng. Mỗi tham số được định nghĩa với tên và kiểu dữ liệu của nó.
Ví dụ, dưới đây là một phương thức mở rộng đơn giản để tính bình phương của một số nguyên:
extension Int { func squared() -> Int { return self * self } }
Trong ví dụ trên, chúng ta đã thêm một phương thức mở rộng squared
vào kiểu dữ liệu Int
, cho phép chúng ta tính bình phương của một số nguyên.
Gọi phương thức mở rộng:
Sau khi đã định nghĩa phương thức mở rộng, chúng ta có thể gọi nó như một phương thức thông thường của kiểu dữ liệu đã được mở rộng. Ví dụ:
let number = 5 let squaredNumber = number.squared() print("Bình phương của \(number) là \(squaredNumber)") // Kết quả: Bình phương của 5 là 25
Trong ví dụ trên, chúng ta gọi phương thức mở rộng squared
trên một số nguyên number
và lưu kết quả vào biến squaredNumber
. Sau đó, chúng ta in ra kết quả bình phương của số number
.
Xem thêm Các kiểu dữ liệu trong c++