F # - ไวยากรณ์พื้นฐาน

คุณได้เห็นโครงสร้างพื้นฐานของโปรแกรม F # แล้วดังนั้นจึงง่ายต่อการเข้าใจส่วนประกอบพื้นฐานอื่น ๆ ของภาษาโปรแกรม F #

โทเค็นใน F #

โปรแกรม F # ประกอบด้วยโทเค็นต่างๆ โทเค็นอาจเป็นคีย์เวิร์ดตัวระบุค่าคงที่สตริงลิเทอรัลหรือสัญลักษณ์ เราสามารถแบ่งประเภทโทเค็น F # ออกเป็นสองประเภท -

  • Keywords
  • สัญลักษณ์และตัวดำเนินการ

คำหลัก F #

ตารางต่อไปนี้แสดงคำสำคัญและคำอธิบายสั้น ๆ ของคำหลัก เราจะพูดถึงการใช้คำหลักเหล่านี้ในบทต่อ ๆ ไป

คำสำคัญ คำอธิบาย
abstract ระบุวิธีการที่ไม่มีการนำไปใช้งานในประเภทที่มีการประกาศหรือที่เป็นเสมือนและมีการใช้งานดีฟอลต์
and ใช้ในการผูกแบบเรียกซ้ำร่วมกันในการประกาศคุณสมบัติและมีข้อ จำกัด หลายประการเกี่ยวกับพารามิเตอร์ทั่วไป
as ใช้เพื่อตั้งชื่ออ็อบเจ็กต์คลาสปัจจุบัน ใช้เพื่อตั้งชื่อให้กับรูปแบบทั้งหมดภายในการจับคู่รูปแบบ
assert ใช้เพื่อตรวจสอบรหัสระหว่างการดีบัก
base ใช้เป็นชื่อของอ็อบเจ็กต์คลาสพื้นฐาน
begin ในไวยากรณ์ verbose ระบุจุดเริ่มต้นของบล็อกรหัส
class ในไวยากรณ์ verbose ระบุจุดเริ่มต้นของนิยามคลาส
default บ่งชี้ถึงการดำเนินการตามวิธีนามธรรม ใช้ร่วมกับการประกาศเมธอดนามธรรมเพื่อสร้างเมธอดเสมือนจริง
delegate ใช้เพื่อประกาศผู้รับมอบสิทธิ์
do ใช้ในการสร้างแบบวนซ้ำหรือเพื่อรันโค้ดที่จำเป็น
done ในไวยากรณ์ verbose ระบุจุดสิ้นสุดของบล็อกโค้ดในนิพจน์การวนซ้ำ
downcast ใช้เพื่อแปลงเป็นประเภทที่ต่ำกว่าในห่วงโซ่การสืบทอด
downto ใน for นิพจน์ใช้เมื่อนับย้อนกลับ
elif ใช้ในการแยกตามเงื่อนไข รูปแบบสั้น ๆ ของ if
else ใช้ในการแยกตามเงื่อนไข
end

ในนิยามประเภทและส่วนขยายประเภทระบุจุดสิ้นสุดของส่วนของนิยามสมาชิก

ในไวยากรณ์ verbose ใช้เพื่อระบุจุดสิ้นสุดของบล็อกโค้ดที่ขึ้นต้นด้วยคีย์เวิร์ดเริ่มต้น

exception ใช้เพื่อประกาศประเภทข้อยกเว้น
extern ระบุว่าองค์ประกอบของโปรแกรมที่ประกาศถูกกำหนดไว้ในไบนารีหรือแอสเซมบลีอื่น
false ใช้เป็นลิเทอรัลบูลีน
finally ใช้ร่วมกับพยายามแนะนำบล็อกของโค้ดที่ดำเนินการโดยไม่คำนึงว่าจะมีข้อยกเว้นเกิดขึ้นหรือไม่
for ใช้ในการสร้างแบบวนซ้ำ
fun ใช้ในนิพจน์แลมบ์ดาหรือที่เรียกว่าฟังก์ชันที่ไม่ระบุชื่อ
function ใช้เป็นทางเลือกที่สั้นกว่าสำหรับคีย์เวิร์ด fun และนิพจน์การจับคู่ในนิพจน์แลมบ์ดาที่มีรูปแบบการจับคู่กับอาร์กิวเมนต์เดียว
global ใช้เพื่ออ้างอิงเนมสเปซ. NET ระดับบนสุด
if ใช้ในโครงสร้างการแยกตามเงื่อนไข
in ใช้สำหรับนิพจน์ลำดับและในไวยากรณ์ verbose เพื่อแยกนิพจน์จากการผูก
inherit ใช้เพื่อระบุคลาสฐานหรืออินเตอร์เฟสพื้นฐาน
inline ใช้เพื่อระบุฟังก์ชันที่ควรรวมเข้ากับรหัสของผู้โทรโดยตรง
interface ใช้เพื่อประกาศและใช้งานอินเทอร์เฟซ
internal ใช้เพื่อระบุว่าสมาชิกสามารถมองเห็นได้ภายในชุดประกอบ แต่ไม่อยู่ภายนอก
lazy ใช้เพื่อระบุการคำนวณที่จะดำเนินการเมื่อต้องการผลลัพธ์เท่านั้น
let ใช้เพื่อเชื่อมโยงหรือผูกชื่อกับค่าหรือฟังก์ชัน
let! ใช้ในเวิร์กโฟลว์แบบอะซิงโครนัสเพื่อผูกชื่อกับผลลัพธ์ของการคำนวณแบบอะซิงโครนัสหรือในนิพจน์การคำนวณอื่น ๆ ที่ใช้เพื่อผูกชื่อกับผลลัพธ์ซึ่งเป็นประเภทการคำนวณ
match ใช้เพื่อแยกสาขาโดยการเปรียบเทียบค่ากับรูปแบบ
member ใช้เพื่อประกาศคุณสมบัติหรือเมธอดในประเภทอ็อบเจ็กต์
module ใช้เพื่อเชื่อมโยงชื่อกับกลุ่มประเภทค่าและฟังก์ชันที่เกี่ยวข้องเพื่อแยกชื่อออกจากรหัสอื่นอย่างมีเหตุผล
mutable ใช้เพื่อประกาศตัวแปรนั่นคือค่าที่เปลี่ยนแปลงได้
namespace ใช้เพื่อเชื่อมโยงชื่อกับกลุ่มประเภทและโมดูลที่เกี่ยวข้องเพื่อแยกออกจากรหัสอื่นอย่างมีเหตุผล
new

ใช้เพื่อประกาศกำหนดหรือเรียกใช้คอนสตรัคเตอร์ที่สร้างหรือที่สามารถสร้างอ็อบเจ็กต์

นอกจากนี้ยังใช้ในข้อ จำกัด พารามิเตอร์ทั่วไปเพื่อระบุว่าชนิดต้องมีตัวสร้างที่แน่นอน

not ไม่ใช่คำหลัก อย่างไรก็ตามการไม่ใช้โครงสร้างร่วมกันเป็นข้อ จำกัด ของพารามิเตอร์ทั่วไป
null

บ่งชี้การไม่มีวัตถุ

ยังใช้ในข้อ จำกัด พารามิเตอร์ทั่วไป

of ใช้ในสหภาพแรงงานที่เลือกปฏิบัติเพื่อระบุประเภทของค่าต่างๆและในการประกาศมอบหมายและข้อยกเว้น
open ใช้เพื่อทำให้เนื้อหาของเนมสเปซหรือโมดูลพร้อมใช้งานโดยไม่มีคุณสมบัติ
or

ใช้กับเงื่อนไขบูลีนเป็นบูลีนหรือตัวดำเนินการ เทียบเท่ากับ ||.

ยังใช้ในข้อ จำกัด ของสมาชิก

override ใช้เพื่อใช้เวอร์ชันของวิธีนามธรรมหรือเสมือนที่แตกต่างจากเวอร์ชันพื้นฐาน
private จำกัด การเข้าถึงของสมาชิกในรหัสในประเภทหรือโมดูลเดียวกัน
public อนุญาตให้เข้าถึงสมาชิกจากภายนอกประเภท
rec ใช้เพื่อระบุว่าฟังก์ชันเป็นแบบวนซ้ำ
return ใช้เพื่อระบุค่าที่จะให้เป็นผลลัพธ์ของนิพจน์การคำนวณ
return! ใช้เพื่อระบุนิพจน์การคำนวณที่เมื่อประเมินแล้วจะให้ผลลัพธ์ของนิพจน์การคำนวณที่มี
select ใช้ในนิพจน์แบบสอบถามเพื่อระบุฟิลด์หรือคอลัมน์ที่จะแยก โปรดทราบว่านี่เป็นคำหลักตามบริบทซึ่งหมายความว่าแท้จริงแล้วไม่ใช่คำสงวนและทำหน้าที่เหมือนคำหลักในบริบทที่เหมาะสมเท่านั้น
static ใช้เพื่อระบุเมธอดหรือคุณสมบัติที่สามารถเรียกได้โดยไม่มีอินสแตนซ์ของชนิดหรือสมาชิกค่าที่ใช้ร่วมกันระหว่างอินสแตนซ์ทั้งหมดของชนิด
struct

ใช้เพื่อประกาศประเภทโครงสร้าง

ยังใช้ในข้อ จำกัด พารามิเตอร์ทั่วไป

ใช้สำหรับความเข้ากันได้ของ OCaml ในข้อกำหนดของโมดูล

then

ใช้ในนิพจน์เงื่อนไข

ใช้เพื่อทำผลข้างเคียงหลังการสร้างวัตถุ

to ใช้สำหรับลูปเพื่อระบุช่วง
true ใช้เป็นลิเทอรัลบูลีน
try ใช้เพื่อแนะนำบล็อกโค้ดที่อาจสร้างข้อยกเว้น ใช้ร่วมกับหรือสุดท้าย.
type ใช้เพื่อประกาศคลาสบันทึกโครงสร้างการแบ่งแยกยูเนี่ยนประเภทการแจงนับหน่วยการวัดหรือตัวย่อประเภท
upcast ใช้เพื่อแปลงเป็นประเภทที่สูงกว่าในห่วงโซ่การสืบทอด
use ใช้แทน let สำหรับค่าที่ต้องการ Dispose เพื่อเรียกใช้ทรัพยากรฟรี
use! ใช้แทนให้! ในเวิร์กโฟลว์แบบอะซิงโครนัสและนิพจน์การคำนวณอื่น ๆ สำหรับค่าที่ต้องการ Dispose เพื่อเรียกใช้ทรัพยากรว่าง
val ใช้ในลายเซ็นเพื่อระบุค่าหรือในประเภทเพื่อประกาศสมาชิกในสถานการณ์ที่ จำกัด
void ระบุชนิดโมฆะ. NET ใช้เมื่อทำงานร่วมกับภาษา. NET อื่น ๆ
when ใช้สำหรับเงื่อนไขบูลีน(เมื่อยาม)ในการจับคู่รูปแบบและเพื่อแนะนำประโยคข้อ จำกัด สำหรับพารามิเตอร์ประเภททั่วไป
while แนะนำโครงสร้างแบบวนซ้ำ
with ใช้ร่วมกับคีย์เวิร์ดที่ตรงกันในนิพจน์การจับคู่รูปแบบ นอกจากนี้ยังใช้ในนิพจน์อ็อบเจ็กต์นิพจน์การคัดลอกบันทึกและประเภทส่วนขยายเพื่อแนะนำนิยามสมาชิกและเพื่อแนะนำตัวจัดการข้อยกเว้น
yield ใช้ในนิพจน์ลำดับเพื่อสร้างค่าสำหรับลำดับ
yield! ใช้ในนิพจน์การคำนวณเพื่อต่อท้ายผลลัพธ์ของนิพจน์การคำนวณที่กำหนดเข้ากับคอลเล็กชันของผลลัพธ์สำหรับนิพจน์การคำนวณที่มี

คำหลักที่สงวนไว้บางคำมาจากภาษา OCaml -

asr ที่ดิน lsl lsr lxor mod ซิก

คำหลักอื่น ๆ ที่สงวนไว้จะถูกเก็บไว้เพื่อการขยาย F # ในอนาคต

ปรมาณู หยุดพัก ตรวจสอบแล้ว ส่วนประกอบ const ข้อ จำกัด 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!