อินฟินิตี้ในทับทิมคืออะไร
เป็นสิ่งที่มีจุดเริ่มต้นแต่ไม่มีจุดจบ
ใน Ruby เราสามารถแสดงแนวคิดเรื่องอินฟินิตี้ได้ ด้วย Float::INFINITY
ค่าคงที่
คุณอาจสงสัยว่าสิ่งนี้มีประโยชน์อย่างไร
ให้ฉันอธิบายด้วยตัวอย่าง!
อินฟินิตี้เป็นผลมาจากการดำเนินการทางคณิตศาสตร์
Ruby ส่งคืน Infinity
วัตถุอันเป็นผลมาจากการดำเนินการทางคณิตศาสตร์บางอย่าง
ตัวอย่างเช่น :
คุณอาจคุ้นเคยกับข้อผิดพลาด "หารด้วยศูนย์"
นี่เลย :
1/0 # ZeroDivisionError: divided by 0
แต่…
หากคุณใช้ทุ่น คุณจะได้อย่างอื่น:
1/0.0 # Infinity
Infinity
!
แต่นั่นไม่ใช่ทั้งหมด
หากคุณลองแบ่ง 0
โดย 0.0
แล้วคุณจะพบกับความคุ้มค่าอีกขั้น
ลองดูสิ :
0/0.0 # NaN
NaN นี้คืออะไร
หมายถึง “ไม่ใช่ตัวเลข” และเท่าที่ฉันรู้ นี่เป็นที่เดียวใน Ruby ที่คุณจะพบค่านี้
ทำไมถึงเป็นแบบนี้
เป็นส่วนหนึ่งของข้อกำหนด IEEE 754 ซึ่งอธิบายว่าการดำเนินการจุดทศนิยมควรเป็นอย่างไร
แต่มีวิธีที่เกี่ยวข้องบางอย่าง :
nan?
finite?
infinite?
คุณสามารถใช้วิธีการเหล่านี้เพื่อตรวจสอบค่าพิเศษได้
วิธีการเหล่านี้มีอยู่ใน Floats
ตั้งแต่ Ruby 2.4 คุณสามารถใช้ finite?
&infinite?
ด้วยจำนวนเต็ม
วิธีสร้างช่วงอนันต์
ได้เลย
นั่นน่าสนใจ… มาดูตัวอย่างเพิ่มเติมกันเถอะ
ตอนนี้มีเรนจ์แล้ว!
นี่คือช่วงอนันต์ :
(1..Float::INFINITY).take(10) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ซึ่งจะมีประโยชน์เมื่อคุณไม่ทราบจุดสิ้นสุดของช่วงล่วงหน้า
ปัญหาหนึ่ง…
ใช้ได้กับตัวเลขเป็นค่าเริ่มต้นเท่านั้น
ตัวอย่าง :
("a"..Float::INFINITY) # ArgumentError: bad value for range
วิธีแก้ปัญหาคืออะไร
ด้วย Ruby 2.6 คุณทำได้ :
("a"..).take(5) # ["a", "b", "c", "d", "e"]
ใช่ นั่นไม่ใช่ความผิดพลาด! ช่วงนี้ไม่มีค่าสิ้นสุด มีเพียงค่าเริ่มต้นของ "a"
แล้วสองจุด ..
เพื่อให้เป็นช่วงที่ไม่มีที่สิ้นสุด
นี่คือรูปแบบใหม่
ใช้ Ruby 2.6+ หากคุณต้องการให้มันทำงาน
อนันต์เป็นค่าสูงสุดและต่ำสุด
การใช้งานจริงอีกอย่างสำหรับ Infinity
?
ก็…
มันใหญ่ที่สุด (Infinity
) &เล็กที่สุด (-Infinity
) หมายเลข Ruby.
คุณสามารถใช้ค่านี้เป็นค่าเริ่มต้นได้
นี่คือตัวอย่าง :
def smallest_percent_size(style, ary_size) @smallest_percent ||= Float::INFINITY if style == :percent && ary_size < @smallest_percent @smallest_percent = ary_size end @smallest_percent end
รหัสนี้มาจาก Rubocop ซึ่งเป็นโครงการโอเพ่นซอร์ส
นี่คือวิธีการทำงาน :
เรากำลังพยายามหาขนาดอาร์เรย์ที่เล็กที่สุด แต่เราต้องการค่าเริ่มต้นสำหรับสิ่งนั้นเพราะใช้ nil
จะทำให้คุณมีข้อผิดพลาด
คุณสามารถพิมพ์ ตัวเลขใหญ่ และหวังว่าจะพอเพียง
หรือคุณสามารถใช้ Float::INFINITY
โดยรู้ว่านั่นคือจำนวนที่มากที่สุด
สรุป
คุณได้เรียนรู้เกี่ยวกับอินฟินิตี้ใน Ruby แล้ว มันคืออะไร อาจปรากฏขึ้นที่ใด และใช้งานอย่างไร
โปรดแชร์บทความนี้เพื่อให้ผู้คนได้รับประโยชน์มากขึ้น
ขอบคุณสำหรับการอ่าน!