Wednesday, December 23, 2015

BASIC SWIFT - Bài 2 - Cú pháp (syntax) cơ bản

Sau Bài 1, chúng ta đã cài đăt được môi trường phát triển cho Swift, cũng như là có được cái nhìn đầu tiên về Swift và xem những dòng code thể hiện bài Hello World.
Trong bài 2 này, chúng ta sẽ cùng học về các Cú pháp Syntax cơ bản dùng trong Swift.
Sau khi bạn tìm hiểu kỹ được các syntax swift rồi thì bạn sẽ rất dễ dàng và nhanh chóng có thể đọc hiểu code mẫu, cũng như bắt tay vào code app của riêng mình.





Chương 2: Cú pháp Syntax Swift cơ bản


Trong Bài 1, bạn nhận được đoạn code sample cho bài Hello World! như sau:


import UIKit

var myString = "Hello, World!"

println(myString)



Lệnh import


Chúng ta dùng lệnh import khi muốn nhúng bất kỳ một thư viện nào của Objective-C hoặc C trực tiếp vào chương trình Swift. Như trong đoạn code ví dụ trên, sau khi import gói UIKit vào, thì tất cả các hàm Cocoa thuộc gói UIKit (APIs, các hàm thuộc thư viện, các class xử lý giao diện, ...) sẽ sẵn sàng để bạn có thể code được bằng Swift.

Nếu bạn chưa biết, thì Cocoa được triển khai bằng Objective-C, và là một tập các lệnh superset viết lên trên C như một layer tiện dụng cao hơn (về bản chất nó vẫn là C, nhưng có chứa nhiều hàm, nhiều sự kiện, APIs, được viết sẵn để tiện cho chúng ta sử dụng). Và vì thế nên bạn sẽ rất dễ dàng nhúng cả code C, hay thậm chí là C++, vào ứng dụng Swift của bạn.



Tokens in Swift


Một chương trình viết bằng Swift thì gồm có nhiều tokens khác nhau, và một token thì có thể là 1 keyword (từ khoá), một khai báo, một constant, một string, hay là một symbol.

Comments


Comments là đoạn text trong trương chình của bạn, nhưng nó sẽ không được biên dịch trong quá trình build code. Nó thường dùng để bạn ghi chú về chức năng của function, của 1 dòng lệnh, ... nhằm giúp bạn dễ dàng nhớ lại hoặc hiểu được mục đích của các dòng lệnh được ghi chú đó.
Comment thì có 2 kiểu.
Comment hiển thị trên nhiều dòng, thì bắt đầu bằng /* và kết thúc khi gặp ký tự */ như ví dụ:


/* My first program in Swift */


Comment nhiều dòng có thể được lồng vào nhau, trong Swift, ví dụ comment sau đây là hợp lệ (tất nhiên bạn không nên làm như thế này nhiều, mà hãy cố gắng giữ tỷ lệ 1-1 nghĩa là 1 cặp mở /* đi kèm 1 cặp đóng */ mà thôi):


/* My first program in Swift is Hello, World!
/* Where as second program is Hello, Swift! */




Nếu bạn chỉ muốn comment nhanh trên một dòng, hãy dùng // ở trước đoạn comment, ví dụ:


// My first program in Swift





Semicolons - ký tự chấm phẩy - ;


Swift không yêu cầu bạn phải viết dấu semicolon ; sau mỗi dòng code, mà có cũng được không có cũng được.
Tuy nhiên, nếu bạn gõ liên tiếp nhiều câu lệnh (statements) trên cùng một dòng code, thì nó là bắt buộc phải dùng semicolon ; sau mỗi câu lệnh (statement). Điều đó nhằm giúp cho trình biên dịch biết phân biệt được các câu lệnh khác nhau, và nếu chúng ta thiếu dấu semicolon ; này, trình biên dịch sẽ báo lỗi.

Ví dụ cách dùng dấu ; vào bài Hello World bạn có thể xem thử như sau:


import UIKit
/* My first program in Swift */
var myString = "Hello, World!"; println(myString)


Identifiers


Một identifier trong swift là một cái tên dành cho một biến, một function, hoặc các item do người dùng tự định nghĩa ra. Một identifier thì thường được bắt đầu các ký tự A-Z, a-z, hoặc dấu gạch dưới _, và sau đó thì có thể là các số từ 0-9 hoặc các chữ cái, dấu gạch dưới khác.

Swift không chấp nhận các ký tự đặc biệt trong tên của identifier như là @, $ hay %. Swift là ngôn ngữ lập trình có phân biệt case-sensitive, và nghĩa là có phân biệt chữ hoa chữ thường (ví dụ biến Abc sẽ khác biệt với biến aBc, và được coi là 2 identifier khác nhau).

Dưới đây là một số ví dụ về các tên identifier được chấp nhận trong Swift:
  • Azad
  • zara
  • abc
  • move_name
  • a_123
  • myname50
  • _temp
  • j
  • a23b9
  • retVal

Để sử dụng 1 từ đã được sử dụng bởi Swift như là từ khoá (reserved word), làm identifier, thì cần phải thêm dấu nháy đơn ' vào trước vào sau tên đó. Ví dụ nếu bạn đặt identifier là class thì là không hợp lệ, nhưng 'class' thì lại được chấp nhận.
Tuy nhiên có lời khuyên là không nên đặt identifier giống các từ khoá đó.


Keywords - Từ khoá


Như đề cập ở trên, thì dưới đây là một số từ khoá đã được sử dụng trong Swift, và nhắc lại là bạn không nên dùng nó để đặt làm identifier như là tên biến, constants, method name, trừ khi bạn có thêm vào trước và sau nó ký tự ':

Các từ khoá dùng trong khai báo


class deinit enum extension
func import init internal
let operator private protocol
public static struct subscript
typealias var


Từ khoá sử dụng trong các câu lệnh


break case continue default
do else fallthrough for
if in return switch
where while


Từ khoá sử dụng trong các biểu thức và kiểu


as dynamicType false is
nil self Self super
true _COLUMN_ _FILE_ _FUNCTION_
_LINE_


Từ khoá sử dụng trong 1 số tình huống context hoàn cảnh


associativity convenience dynamic didSet
final get infix inout
lazy left mutating none
nonmutating optional override postfix
precedence prefix Protocol required
right set Type unowned
weak willSet




Whitespace - Ký tự trắng



Một dòng chứa toàn ký tự trắng, hoặc với comment, còn được gọi là blank line - dòng trống, và trình biên dịch Swift sẽ hoàn toàn bỏ qua chúng khi dịch code.

Whitespace - là từ dùng chung trong Swift để chỉ các: khoảng trắng, tabs, ký tự dòng mới (xuống dòng), và comment.
Whitespace thường dùng để ngăn cách các phần trong một câu lệnh để trình biên dịch phân biệt được các thành phần trong câu lệnh như là khởi đầu, kết thúc, operators, ... Thường thì có ít nhất 1 ký tự trắng như là space giữa các phần trong một câu lệnh.

Ví dụ:


var age

int fruit = apples + oranges //get the total fruits



Tất nhiên, không bắt buộc phải đặt dấu gạch trắng ở giữa fruit, và =, hoặc giữa = và apples, tuy nhiên bạn nên đặt đầy đủ như trên để dễ dàng trong việc đọc code.



Literals


Literal là phần giá trị của biến trong source code. Ví dụ:


92 // Integer literal
4.24159 // Floating-point literal
"Hello, World!" // String literal