F # - Cú pháp cơ bản
Bạn đã thấy cấu trúc cơ bản của một chương trình F #, vì vậy sẽ dễ dàng hiểu được các khối xây dựng cơ bản khác của ngôn ngữ lập trình F #.
Mã thông báo trong F #
Một chương trình F # bao gồm các mã thông báo khác nhau. Mã thông báo có thể là một từ khóa, một mã định danh, một hằng số, một chuỗi ký tự hoặc một ký hiệu. Chúng tôi có thể phân loại mã thông báo F # thành hai loại:
- Keywords
- Ký hiệu và toán tử
F # Từ khóa
Bảng sau đây cho thấy các từ khóa và mô tả ngắn gọn về các từ khóa. Chúng ta sẽ thảo luận về việc sử dụng các từ khóa này trong các chương tiếp theo.
Từ khóa | Sự miêu tả |
---|---|
abstract | Chỉ ra một phương thức không có triển khai trong kiểu mà nó được khai báo hoặc là ảo và có triển khai mặc định. |
and | Được sử dụng trong các ràng buộc đệ quy lẫn nhau, trong khai báo thuộc tính và với nhiều ràng buộc về các tham số chung. |
as | Được sử dụng để cung cấp cho đối tượng lớp hiện tại một tên đối tượng. Cũng được sử dụng để đặt tên cho toàn bộ mẫu trong khớp mẫu. |
assert | Được sử dụng để xác minh mã trong quá trình gỡ lỗi. |
base | Được sử dụng làm tên của đối tượng lớp cơ sở. |
begin | Trong cú pháp dài dòng, chỉ ra điểm bắt đầu của một khối mã. |
class | Trong cú pháp dài dòng, chỉ ra sự bắt đầu của một định nghĩa lớp. |
default | Cho biết việc thực hiện một phương thức trừu tượng; được sử dụng cùng với khai báo phương thức trừu tượng để tạo phương thức ảo. |
delegate | Dùng để khai báo một đại biểu. |
do | Được sử dụng trong các cấu trúc lặp hoặc để thực thi mã mệnh lệnh. |
done | Trong cú pháp dài dòng, chỉ ra phần cuối của một khối mã trong một biểu thức lặp. |
downcast | Được sử dụng để chuyển đổi sang một loại thấp hơn trong chuỗi kế thừa. |
downto | Trong một for biểu thức, được sử dụng khi đếm ngược lại. |
elif | Được sử dụng trong phân nhánh có điều kiện. Một dạng rút gọn của else if. |
else | Được sử dụng trong phân nhánh có điều kiện. |
end | Trong định nghĩa kiểu và phần mở rộng kiểu, chỉ ra phần cuối của phần định nghĩa thành viên. Trong cú pháp dài dòng, được sử dụng để chỉ định phần cuối của khối mã bắt đầu bằng từ khóa begin. |
exception | Dùng để khai báo một kiểu ngoại lệ. |
extern | Chỉ ra rằng một phần tử chương trình đã khai báo được định nghĩa trong một hệ nhị phân hoặc hợp ngữ khác. |
false | Được sử dụng như một nghĩa đen Boolean. |
finally | Được sử dụng cùng với việc cố gắng giới thiệu một khối mã thực thi bất kể trường hợp ngoại lệ có xảy ra hay không. |
for | Được sử dụng trong các cấu trúc lặp. |
fun | Được sử dụng trong biểu thức lambda, còn được gọi là hàm ẩn danh. |
function | Được sử dụng như một sự thay thế ngắn hơn cho từ khóa fun và một biểu thức đối sánh trong một biểu thức lambda có đối sánh mẫu trên một đối số. |
global | Được sử dụng để tham chiếu không gian tên .NET cấp cao nhất. |
if | Được sử dụng trong các cấu trúc phân nhánh có điều kiện. |
in | Được sử dụng cho các biểu thức trình tự và, trong cú pháp dài dòng, để tách các biểu thức khỏi các ràng buộc. |
inherit | Được sử dụng để chỉ định một lớp cơ sở hoặc giao diện cơ sở. |
inline | Được sử dụng để chỉ ra một chức năng cần được tích hợp trực tiếp vào mã của người gọi. |
interface | Dùng để khai báo và triển khai các giao diện. |
internal | Được sử dụng để chỉ định rằng một thành viên có thể nhìn thấy bên trong một assembly nhưng không hiển thị bên ngoài nó. |
lazy | Được sử dụng để chỉ định một phép tính chỉ được thực hiện khi cần kết quả. |
let | Được sử dụng để liên kết hoặc ràng buộc tên với một giá trị hoặc hàm. |
let! | Được sử dụng trong quy trình làm việc không đồng bộ để liên kết tên với kết quả của phép tính không đồng bộ hoặc trong các biểu thức tính toán khác, được sử dụng để liên kết tên với một kết quả, thuộc loại tính toán. |
match | Được sử dụng để phân nhánh bằng cách so sánh một giá trị với một mẫu. |
member | Được sử dụng để khai báo một thuộc tính hoặc một phương thức trong một kiểu đối tượng. |
module | Được sử dụng để liên kết tên với một nhóm các kiểu, giá trị và chức năng có liên quan, để tách nó khỏi mã khác một cách hợp lý. |
mutable | Dùng để khai báo một biến, tức là một giá trị có thể thay đổi được. |
namespace | Được sử dụng để liên kết tên với một nhóm các kiểu và mô-đun có liên quan, để tách nó khỏi mã khác một cách hợp lý. |
new | Được sử dụng để khai báo, định nghĩa hoặc gọi một phương thức khởi tạo tạo hoặc có thể tạo một đối tượng. Cũng được sử dụng trong các ràng buộc tham số chung để chỉ ra rằng một kiểu phải có một hàm tạo nhất định. |
not | Không thực sự là một từ khóa. Tuy nhiên, không phải kết hợp struct được sử dụng như một ràng buộc tham số chung. |
null | Cho biết sự vắng mặt của một đối tượng. Cũng được sử dụng trong các ràng buộc tham số chung. |
of | Được sử dụng trong các liên hiệp phân biệt đối xử để chỉ ra loại giá trị, và trong khai báo ủy quyền và ngoại lệ. |
open | Được sử dụng để cung cấp nội dung của không gian tên hoặc mô-đun mà không cần đủ điều kiện. |
or | Được sử dụng với điều kiện Boolean như một Boolean hoặc toán tử. Tương đương với ||. Cũng được sử dụng trong các ràng buộc thành viên. |
override | Được sử dụng để triển khai một phiên bản của phương thức trừu tượng hoặc ảo khác với phiên bản cơ sở. |
private | Hạn chế quyền truy cập của một thành viên vào mã trong cùng loại hoặc mô-đun. |
public | Cho phép truy cập vào một thành viên từ bên ngoài loại. |
rec | Được sử dụng để chỉ ra rằng một hàm là đệ quy. |
return | Được sử dụng để chỉ ra một giá trị cần cung cấp dưới dạng kết quả của một biểu thức tính toán. |
return! | Được sử dụng để chỉ ra một biểu thức tính toán, khi được đánh giá, cung cấp kết quả của biểu thức tính toán chứa. |
select | Được sử dụng trong biểu thức truy vấn để chỉ định trường hoặc cột nào cần trích xuất. Lưu ý rằng đây là một từ khóa theo ngữ cảnh, có nghĩa là nó thực sự không phải là một từ dành riêng và nó chỉ hoạt động giống như một từ khóa trong ngữ cảnh thích hợp. |
static | Được sử dụng để chỉ một phương thức hoặc thuộc tính có thể được gọi mà không có một thể hiện của kiểu hoặc một thành viên giá trị được chia sẻ giữa tất cả các thể hiện của kiểu. |
struct | Dùng để khai báo một kiểu cấu trúc. Cũng được sử dụng trong các ràng buộc tham số chung. Được sử dụng để tương thích OCaml trong định nghĩa mô-đun. |
then | Được sử dụng trong biểu thức điều kiện. Cũng được sử dụng để thực hiện các hiệu ứng phụ sau khi xây dựng đối tượng. |
to | Được sử dụng trong vòng lặp for để chỉ ra một phạm vi. |
true | Được sử dụng như một nghĩa đen Boolean. |
try | Được sử dụng để giới thiệu một khối mã có thể tạo ra một ngoại lệ. Được sử dụng cùng với hoặc cuối cùng. |
type | Được sử dụng để khai báo một lớp, bản ghi, cấu trúc, liên hiệp phân biệt, kiểu liệt kê, đơn vị đo lường hoặc viết tắt kiểu. |
upcast | Được sử dụng để chuyển đổi sang một loại cao hơn trong chuỗi kế thừa. |
use | Được sử dụng thay vì let cho các giá trị yêu cầu Dispose được gọi đến tài nguyên miễn phí. |
use! | Được sử dụng thay vì let! trong quy trình làm việc không đồng bộ và các biểu thức tính toán khác cho các giá trị yêu cầu Dispose được gọi đến tài nguyên giải phóng. |
val | Được sử dụng trong một chữ ký để chỉ ra một giá trị, hoặc trong một kiểu để khai báo một thành viên, trong những tình huống hạn chế. |
void | Cho biết kiểu void .NET. Được sử dụng khi tương tác với các ngôn ngữ .NET khác. |
when | Được sử dụng cho các điều kiện Boolean (khi bảo vệ) trên mẫu khớp và để giới thiệu một mệnh đề ràng buộc cho một tham số kiểu chung. |
while | Giới thiệu một cấu trúc lặp. |
with | Được sử dụng cùng với từ khóa đối sánh trong biểu thức đối sánh mẫu. Cũng được sử dụng trong biểu thức đối tượng, biểu thức sao chép bản ghi và phần mở rộng kiểu để giới thiệu các định nghĩa thành viên và giới thiệu các trình xử lý ngoại lệ. |
yield | Được sử dụng trong biểu thức trình tự để tạo ra giá trị cho một chuỗi. |
yield! | Được sử dụng trong một biểu thức tính toán để nối kết quả của một biểu thức tính toán đã cho vào tập hợp các kết quả cho biểu thức tính toán có chứa. |
Một số từ khóa dành riêng đến từ ngôn ngữ OCaml -
asr | đất đai | lor | lsl | lsr | lxor | mod | dấu hiệu |
Một số từ khóa dành riêng khác được giữ lại để mở rộng F # trong tương lai.
nguyên tử | phá vỡ | đã kiểm tra | thành phần | hăng sô | hạn chế | constructor |
continue | eager | event | external | fixed | functor | include |
method | mixin | object | parallel | process | protected | pure |
sealed | tailcall | trait | virtual | volatile |
Comments in F#
F# provides two types of comments −
- One line comment starts with // symbol.
- Multi line comment starts with (* and ends with *).
A Basic Program and Application Entry Point in F#
Generally, you don’t have any explicit entry point for F# programs. When you compile an F# application, the last file provided to the compiler becomes the entry point and all top level statements in that file are executed from top to bottom.
A well-written program should have a single top-level statement that would call the main loop of the program.
A very minimalistic F# program that would display ‘Hello World’ on the screen −
(* This is a comment *)
(* Sample Hello World program using F# *)
printfn "Hello World!"
When you compile and execute the program, it yields the following output −
Hello World!