ฟังก์ชัน RecordOf และ Type
ใช้กับ: แอปพื้นที่ทำงาน
สร้างชนิดที่ผู้ใช้กำหนดเพื่อใช้กับฟังก์ชันที่ผู้ใช้กำหนดและค่าที่ไม่ได้กำหนดชนิด
สำคัญ
- ฟังก์ชันเหล่านี้เป็นการทดลอง
- คุณลักษณะทดลองไม่ได้มีไว้สำหรับการนำไปใช้งานจริงและอาจไม่สมบูรณ์ คุณลักษณะเหล่านี้สามารถใช้ได้ก่อนการเปิดตัวอย่างเป็นทางการเพื่อให้คุณสามารถเข้าใช้งานได้ก่อนเวลาและให้ข้อคิดเห็น ข้อมูลเพิ่มเติม: ทำความเข้าใจคุณลักษณะทดลอง แสดงตัวอย่าง และเลิกใช้แล้วในแอปพื้นที่ทำงาน
- ลักษณะการทำงานนี้ใช้ได้เฉพาะเมื่อคุณเปิดคุณลักษณะการทดลอง ชนิดที่ผู้ใช้กำหนด ใน การตั้งค่า > คุณลักษณะที่กำลังจะมา > การทดลอง (ปิดอยู่โดยค่าเริ่มต้น)
- ข้อคิดเห็นของคุณมีประโยชน์ บอกให้เราทราบว่าคุณคิดอย่างไรใน ฟอรัมชุมชนของคุณลักษณะทดลอง Power Apps
Description
ทุกฟังก์ชันใน Power Fx กำหนดชนิดของค่าที่สามารถส่งผ่านเป็นพารามิเตอร์และชนิดของเอาต์พุต มีการตรวจสอบชนิดเมื่อคุณเขียนสูตรและจะแสดงข้อผิดพลาดหากไม่ตรงกับที่คาดหวัง ตัวแก้ไขยังใช้ชนิดเพื่อแนะนำตัวเลือกที่ดีในการส่งค่าเข้าไปในฟังก์ชันและตรวจจับข้อผิดพลาดให้เร็วที่สุด
เมื่อสร้างฟังก์ชันที่ผู้ใช้กำหนดคุณต้องระบุประเภทอินพุตและเอาต์พุต สำหรับชนิดง่ายๆ เช่น ทศนิยม หรือ ข้อความ เป็นเรื่องง่ายเนื่องจากชนิดพื้นฐานเหล่านี้ถูกกำหนดไว้ล่วงหน้า สำหรับชนิดที่ซับซ้อนมากขึ้น เช่น เรกคอร์ดหรือตาราง ให้ใช้ฟังก์ชัน Type เพื่อสร้างชนิด
ฟังก์ชัน Type ยังช่วยให้ใช้ออบเจ็กต์ที่ไม่ได้ระบุชนิดทำงานได้ง่ายขึ้น ด้วยฟังก์ชัน ParseJSON, IsType และ AsType ออบเจ็กต์ที่ไม่ได้ระบุชนิดสามารถแปลงเป็นออบเจ็กต์ที่ระบุชนิด ซึ่งทำให้คอลัมน์ไม่จำเป็นต้องพิมพ์ทีละคอลัมน์ ณ จุดใช้งานอีกต่อไป
ฟังก์ชัน Type ใช้ TypeSpecification เนื่องจากเป็นเพียงอาร์กิวเมนต์เท่านั้น ข้อกำหนดเฉพาะชนิดที่ง่ายที่สุดคือการอ้างอิงชนิดที่มีอยู่ เช่น Type( Text )
ข้อกำหนดชนิดสำหรับเรกคอร์ดหรือตารางคล้ายกับการกำหนดเรกคอร์ดหรือตารางที่มีค่าตามตัวอักษร ซึ่งค่าจะถูกแทนที่ด้วยชื่อชนิด ตัวอย่างเช่น {Name: "Jane"}
จะถูกกำหนดชนิดด้วย Type( {Name: Text} )
ตารางถูกระบุด้วยวงเล็บเหลี่ยม ไม่ใช่ฟังก์ชัน Table และสามารถระบุได้เพียงเรกคอร์ดเดียวเท่านั้น ตัวอย่างเช่น [1,2,3]
จะถูกกำหนดชนิดด้วย Type( [Number] )
ใช้ฟังก์ชัน RecordOf เพื่อแยกชนิดของเรกคอร์ดออกจากชนิดตาราง ตัวอย่างเช่น Type( RecordOf( Library ) )
จะส่งคืนชนิดของหนังสือเล่มเดียวจากห้องสมุด เมื่อต้องการสร้างชนิดตารางจากชนิดเรกคอร์ด ให้ตัดชนิดเรกคอร์ดในวงเล็บเหลี่ยม ตัวอย่างเช่น Type( [ Book ] )
กำหนดห้องสมุด
RecordOf สามารถใช้ได้ภายในฟังก์ชัน Type เท่านั้น
ฟังก์ชัน Type และค่าชนิดที่ส่งคืนสามารถใช้ได้ในที่ที่เฉพาะเจาะจงใน Power Fx เท่านั้น เช่น อาร์กิวเมนต์ที่สองของ ParseJSON ในแอปพื้นที่ทำงาน ฟังก์ชัน Type สามารถใช้กับสูตรที่มีชื่อใน App.Formulas
ไวยากรณ์
RecordOf(TableType)
- TableType – จำเป็น ชื่อชนิดของตาราง ซึ่งไม่ยอมรับข้อกำหนดเฉพาะชนิด แต่ต้องเป็นชื่อของชนิดที่ได้รับการกำหนดไว้ก่อนหน้านี้สำหรับตาราง
Type(TypeSpecification)
- TypeSpecification – จำเป็น ข้อกำหนดเฉพาะชนิด
ตัวอย่าง
ฟังก์ชัน Type
พิจารณาคำจำกัดความต่อไปนี้ใน App.Formulas:
Library =
[ { Title: "A Study in Scarlet", Author: "Sir Arthur Conan Doyle", Published: 1887 },
{ Title: "And Then There Were None", Author: "Agatha Christie", Published: 1939 },
{ Title: "The Marvelous Land of Oz", Author: "L. Frank Baum", Published: 1904 } ];
// Type definition for a single book
BookType := Type( { Title: Text, Author: Text, Published: Number } );
// Type definition for a table of books
LibraryType := Type( [ BookType ] );
สังเกตว่าข้อความชื่อเรื่องจริง "A Study in Scarlet"
ถูกแทนที่ด้วยชื่อชนิด Text
ในข้อกำหนดเฉพาะชนิด ซึ่งเป็นตัวยึดสำหรับค่าข้อความใดๆ พารามิเตอร์หรือตัวแปรชนิด BookType
สามารถเก็บหนังสือเล่มใดเล่มหนึ่งไว้ Library
ในขณะที่ LibraryType
สามารถเก็บทั้งตาราง ด้วยประเภทเหล่านี้เราสามารถกำหนดฟังก์ชันที่ผู้ใช้กำหนดเหล่านี้ได้:
SortedBooks( books: LibraryType ): LibraryType =
SortByColumns( Library, Author, SortOrder.Ascending, Title, SortOrder.Ascending );
PublishedInLeapYear( book: BookType ): Boolean =
Mod( book.Published, 4 ) = 0 And
(Mod( book.Published, 100 ) <> 0 Or Mod( book.Published, 400 ) = 0);
คุณยังสามารถใช้ BookType
เพื่อแยกวิเคราะห์สตริง JSON ที่มีหนังสือ:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
การใช้ BookType
เป็นอาร์กิวเมนต์ที่สองของ ParseJSON ส่งผลต่อเรกคอร์ดที่ระบุชนิดซึ่งสามารถใช้ได้เหมือนกับเรกคอร์ด Power Fx อื่นๆ
ฟังก์ชัน RecordOf
ในตัวอย่างฟังก์ชัน Type คุณเริ่มต้นด้วย BookType
และสร้าง LibraryType
โดยการครอบตารางไว้รอบๆ เราสามารถกำหนดประเภทเหล่านี้ในทางกลับกันกับ:
// Type definition for a table of books
RecordOfLibraryType := Type( [ { Title: Text, Author: Text, Published: Number } ] );
// Type definition for a single book
RecordOfBookType := Type( RecordOf( RecordOfLibraryType ) );