Copy
đoạn lệnh sau vào trong Playground
func show(){
print("Đây là dòng chữ ví dụ")
}
Bên
phải màn hình trắng trơn không có gì
Gõ
thêm dòng show() vào chạy thử.
Bây
giờ màn hình đã in ra dòng chữ ta muốn.
Tiếp
theo ở trên dấu ngoặc dưới cùng, copy đoạn code sau vào
func tinhnhan(a:Int,_ b:Int){
let c=a*b
print("Kết quả nhân hai số là: "+String(c))
}
Bên
dưới thêm các dòng sau:
let so=10;
let so2=12;
tinhnhan(so,so2)
Màn
hình có kết quả 120 được tính ra.
Các
đoạn code có tên show(), tinhnhan() được gọi là hàm hay phương thức.
Vậy
phương thức là tập hợp các dòng lệnh bắt đầu bằng biểu thức kiểu như func tên gọi{
Kết
thức bằng dấu }
Phương
thức sẽ làm một cái gì đó, như với show() là để in ra màn hình dòng chữ, với
tinhnhan() là để tính tích hai số bất kỳ.
Ban
đầu ta không cho dòng show() vào thì nó không hiện ra gì cả, đó là vì ta chưa gọi
phương thức.
Bắt
đầu từ funcshow()
là ta khai báo phương thức, ở dưới gọi để dùng nó, không dùng thì coi như không
có gì.
Bạn
có thể thắc mắc sao không để lệnh print("Đây là dòng chữ ví dụ")luôn,
còn cần show() làm gì, đương nhiên đây là ví dụ đơn giản. Khi làm thực tế, các
phương thức có thể rất dài, cần dùng nhiều lần. Bạn sẽ khai báo nó một lần, lúc
nào dùng lại gọi.
Như với tinhnhan(), mỗi khi cần nhân 2 số a, b bất kỳ bạn chỉ dùng
một dòng tinhnhan(a,b) chứ không cần gõ lại lệnh nhân cụ thể nữa. Đó chính là lợi
ích của dùng phương thức.
So sánh show() và tinhnhan() ta thấy show không có gì trong ngoặc,
ta gọi là nó không nhận đối số truyền vào, còn tinhnhan nhận vào 2 biến số
nguyên a, b.
Thử xoá dấu gạch trước chữ b trong tinhnhan()
Xcode báo lỗi và buộc bạn thêm chữ b: vào trước so2
Đây là cái bất tiện của Swift, để gõ luôn các đối số tiếp theo
trong phương thức, ta phải thêm dấu gạch chân trước nó khi khai báo.
Tiếp theo, copy dòng code sau xuống dưới phương thức tinhnhan()
func tinhnhan2(a:Int, b:Int)->Int {
let c=a*b
return c
}
let so3=15;
let so4=2;
let d=tinhnhan2(so3,so4)
print("Kết quả phương thức hai là: "+String(d))Bên trên thêm Màn hình hiện ra dòng kết quả.
Bây
giờ hãy so sánh tinhnhan() và tinhnhan2(), ta thấy chỗ mũi tên và chữ int ở
phần đầu tinhnhan2() là khác tinhnhan().
Nếu
không có mũi tên ta gọi là phương thức không trả lại giá trị, có mũi tên tức nó
trả lại giá trị nào đó, int tức trả lại một số nguyên. Nên trong tinhnhan2 phía
cuối có dòng return
c.
Nếu
phương thức khai báo không có mũi tên, không có chữ return.
Vì
tinhnhan2 chỉ trả lại giá trị nhân nên khi dùng nó ở trên, muốn có thêm dòng chữ
kết quả ta cần thêm lệnh print vào.
Phương
thức có thể trả lại giá trị là một chuỗi, copy thêm dòng code sau vào dưới
tinhnhan2.
func tinhcong(a:Int,_ b:Int)->String {
let c=a+b
return"Kết quả là " + String(c)
}
tinhcong(so3,so4)
Chạy
thử ra kết quả như sau.
Vì
tinhcong cho ra kết quả là một chuỗi nên khi dùng ta không cần thêm lệnh in nữa.
Phương
thức cũng có thể trả lại mảng, copy đoạn code sau xuống dưới phương thức
tinhcong()
func tinhtoan(a:Int,_ b:Int)->[Int] {
var ar=[Int](count: 3, repeatedValue: 0)
let c=a+b;
let d=a-b;
let e=a*b;
ar[0]=c;
ar[1]=d;
ar[2]=e;
return ar
}
var kq=[Int](count: 3, repeatedValue: 0)
kq=tinhtoan(so3,so4)
Kết
quả ta có mảng 3 số nguyên của các phép tính cộng, trừ, nhân hai số đầu vào.
Bài
tập
Làm
phương thức chia 2 số, trả lại kết quả kiểu Double
Phương
thức tính căn, làm tròn kết quả còn hai chữ số sau dấu phảy, dùng công thức let n=sqrt(Double) để tính căn một số
No comments:
Post a Comment