Scala - Chức năng
Hàm là một nhóm các câu lệnh thực hiện một nhiệm vụ. Bạn có thể chia mã của mình thành các chức năng riêng biệt. Cách bạn phân chia mã của mình giữa các chức năng khác nhau là tùy thuộc vào bạn, nhưng về mặt logic, việc phân chia thường là để mỗi chức năng thực hiện một nhiệm vụ cụ thể.
Scala có cả chức năng và phương pháp và chúng tôi sử dụng phương pháp thuật ngữ và chức năng thay thế cho nhau với một sự khác biệt nhỏ. Phương thức Scala là một phần của lớp có tên, chữ ký, tùy chọn một số chú thích và một số mã bytecode trong đó như một hàm trong Scala là một đối tượng hoàn chỉnh có thể được gán cho một biến. Nói cách khác, một hàm, được định nghĩa là một thành viên của một số đối tượng, được gọi là một phương thức.
Định nghĩa hàm có thể xuất hiện ở bất kỳ đâu trong tệp nguồn và Scala cho phép các định nghĩa hàm lồng nhau, nghĩa là các định nghĩa hàm bên trong các định nghĩa hàm khác. Điểm quan trọng nhất cần lưu ý là tên của hàm Scala có thể có các ký tự như +, ++, ~, &, -, -, \, /,:, v.v.
Khai báo hàm
Khai báo hàm Scala có dạng sau:
def functionName ([list of parameters]) : [return type]
Các phương thức được khai báo ngầm định là trừu tượng nếu bạn không sử dụng dấu bằng và thân phương thức.
Định nghĩa hàm
Định nghĩa hàm Scala có dạng sau:
Cú pháp
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}
Đây, return type có thể là bất kỳ kiểu dữ liệu Scala hợp lệ nào và list of parameterssẽ là danh sách các biến được phân tách bằng dấu phẩy và danh sách các tham số và kiểu trả về là tùy chọn. Rất giống với Java,returncâu lệnh có thể được sử dụng cùng với một biểu thức trong trường hợp hàm trả về một giá trị. Sau đây là hàm sẽ cộng hai số nguyên và trả về tổng của chúng:
Cú pháp
object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
Một hàm không trả về bất cứ thứ gì có thể trả về Unit điều đó tương đương với voidtrong Java và chỉ ra rằng hàm không trả về bất kỳ thứ gì. Các hàm không trả về bất cứ thứ gì trong Scala, chúng được gọi là các thủ tục.
Cú pháp
Đây là cú pháp -
object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
}
}
Chức năng gọi điện
Scala cung cấp một số biến thể cú pháp để gọi các phương thức. Sau đây là cách chuẩn để gọi một phương thức:
functionName( list of parameters )
Nếu một hàm đang được gọi bằng cách sử dụng một thể hiện của đối tượng, thì chúng ta sẽ sử dụng ký hiệu dấu chấm tương tự như Java như sau:
[instance.]functionName( list of parameters )
Hãy thử chương trình ví dụ sau để xác định và sau đó gọi hàm tương tự.
Thí dụ
object Demo {
def main(args: Array[String]) {
println( "Returned Value : " + addInt(5,7) );
}
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
Returned Value : 12
Các hàm Scala là trung tâm của lập trình Scala và đó là lý do tại sao Scala được coi là một ngôn ngữ lập trình hàm. Sau đây là một vài khái niệm quan trọng liên quan đến các hàm Scala mà một lập trình viên Scala nên hiểu.
Chức năng Gọi theo tên | Các hàm với các đối số được đặt tên |
Hàm với các đối số biến | Hàm đệ quy |
Giá trị tham số mặc định | Chức năng bậc cao hơn |
Các hàm lồng nhau | Chức năng ẩn danh |
Các chức năng được áp dụng một phần | Chức năng cà ri |