Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

5 ตัวอย่างที่เป็นประโยชน์จากไลบรารีมาตรฐาน Ruby

Ruby Standard Library เป็นชุดของโมดูลและคลาสที่มาพร้อมกับ Ruby แต่ไม่ได้เป็นส่วนหนึ่งของภาษานั้นเอง

ชั้นเรียนเหล่านี้มีสาธารณูปโภคที่หลากหลาย เช่น:

  • การเข้ารหัส Base64
  • การสร้างจำนวนเฉพาะ
  • ความละเอียด DNS

ในบทความนี้ ผมจะนำเสนอ 5 คลาสเหล่านี้พร้อมตัวอย่างที่เป็นประโยชน์

คลาส Ruby Logger

หากคุณต้องการบันทึกข้อผิดพลาดหรือข้อความแก้ไขข้อบกพร่อง คุณได้ครอบคลุมถึง Logger ชั้นเรียน

คลาสนี้มีทุกสิ่งที่คุณต้องการเพื่อเริ่มการบันทึก!

การใช้งาน Logger คุณสามารถสร้าง Logger . ได้ วัตถุ &ให้สตรีมเอาต์พุต (หรือชื่อไฟล์) เป็นพารามิเตอร์ จากนั้นคุณสามารถใช้ระดับการบันทึกต่างๆ เพื่อลงทะเบียนข้อความของคุณ

ระดับการบันทึกคือ:

  • ดีบัก
  • ข้อมูล
  • เตือน
  • ข้อผิดพลาด
  • เสียชีวิต

ตัวอย่าง :

require 'logger'

logger = Logger.new(STDOUT)

logger.info 'testing...'
logger.warn 'fun with Ruby :)'

สิ่งนี้สร้างผลลัพธ์ต่อไปนี้ :

I, [2016-05-14T15:50:21.367590 #12148]  INFO -- : testing...
W, [2016-05-14T15:50:21.846651 #12148]  WARN -- : fun with Ruby 🙂

อักขระตัวแรกคือรูปแบบย่อของระดับการบันทึก (I สำหรับ Info, W สำหรับ Warn)... จากนั้นคุณมีเวลาประทับและ id กระบวนการปัจจุบัน (ซึ่งคุณสามารถรับใน Ruby โดยใช้ Process.pid )

สุดท้าย คุณมีระดับการบันทึกแบบเต็มและข้อความจริง

คุณสามารถเปลี่ยนรูปแบบนี้ได้โดยการจัดเตรียมฟอร์แมตเตอร์ใหม่

การทำงานกับ Prime Numbers

บางทีคุณไม่จำเป็นต้องจัดการกับจำนวนเฉพาะในแต่ละวัน แต่ก็ยังดีที่จะรู้ (โดยเฉพาะถ้าคุณชอบความท้าทายในการเขียนโปรแกรม) ว่า Ruby มีการสนับสนุนที่ดีสำหรับพวกเขาผ่าน Prime ชั้นเรียน

เมื่อคุณต้องการ Prime มันจะเพิ่ม prime? วิธีการ Fixnum .

ตัวอย่าง :

require 'prime'

5.prime?  # true
11.prime? # true
20.prime? # false

คลาสนี้ยังรวมถึงตัวสร้างจำนวนเฉพาะด้วย

ตัวอย่าง :

Prime.take(10)
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

วิธีใช้คลาส StringIO

StringIO คลาสช่วยให้คุณสร้างสตริงที่ทำงานเหมือน IO วัตถุ

ซึ่งหมายความว่าคุณสามารถทำงานกับสตริงนี้ได้เหมือนกับว่าคุณกำลังอ่านจากไฟล์หรือ STDIN (อินพุตมาตรฐาน)

นี่คือตัวอย่าง :

require 'stringio'

io = StringIO.new

io << 'test'
io << 'code'

puts io.string
# "testcode"

สังเกตบางสิ่ง :

เมื่อคุณเพิ่มข้อมูลลงใน StringIO วัตถุจะไม่เพิ่มช่องว่างหรือขึ้นบรรทัดใหม่สำหรับคุณ และเพื่อให้ได้สตริงจริง คุณต้องเรียก string วิธีการ

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

สิ่งนี้มีประโยชน์เมื่อใด

บางครั้งคุณอาจต้องการแทนที่ไฟล์หรืออ็อบเจ็กต์ IO อื่นๆ สำหรับอ็อบเจ็กต์อื่นที่คุณควบคุมได้มากกว่า ตัวอย่างเช่น ในสภาพแวดล้อมการทดสอบ คุณสามารถแทนที่ STDOUT ด้วย StringIO วัตถุ

คุณสามารถดูตัวอย่างโลกแห่งความเป็นจริงจาก Rails ได้ที่นี่:https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/activesupport/test/logger_test.rb

การเข้ารหัสและถอดรหัส Base64

Base64 เป็นรูปแบบการเข้ารหัสที่พบได้ทั่วไปบนอินเทอร์เน็ต

หน้าตาเป็นแบบนี้ :

"cnVieQ=="

ทำไมถึงมีประโยชน์?

URL อนุญาตให้มีชุดอักขระที่จำกัด บางครั้งคุณต้องการรวมอักขระเหล่านั้น &Base64 ทำให้สิ่งนี้เป็นไปได้

วิธีเข้ารหัสมีดังนี้:

require 'base64'

Base64.encode64("ruby")
"cnVieQ=="

นี่คือวิธีการถอดรหัส:

require 'base64'

Base64.decode64("cnVieQ==")
"ruby"

การทำงานกับเส้นทาง

Pathname class wraps ยูทิลิตี้การสำรวจระบบไฟล์ต่างๆ เช่น Dir &File , ในคลาสที่ทรงพลังกว่ามาก

แม้ว่าชื่อเมธอดจะเหมือนกัน แต่จะส่งคืน Pathname วัตถุแทนสตริงหรืออาร์เรย์ และสิ่งนี้หมายความว่าคุณสามารถทำงานกับผลลัพธ์ด้วยวิธีการที่เกี่ยวข้องกับไฟล์ทั้งหมดได้

นี่เป็นตัวอย่างที่ดี :

require 'pathname'

Pathname.glob("*").count(&:directory?)

หากคุณลองทำสิ่งนี้ด้วย Dir คุณจะต้องใช้รหัสนี้ซึ่งไม่สวยหรู

Dir.glob("*").count { |d| File.directory?(d) }

ลองทำสิ่งนี้ในครั้งต่อไปที่คุณต้องทำงานเกี่ยวกับระบบไฟล์ 🙂

บทสรุป

ฉันหวังว่าคุณจะพบว่าตัวอย่างเหล่านี้มีประโยชน์! อย่าลืมสำรวจไลบรารีมาตรฐานอีกเล็กน้อยเพื่อเรียนรู้ว่าห้องสมุดสามารถทำอะไรให้คุณได้บ้าง

อย่าลืมแชร์โพสต์นี้หากคุณชอบ 🙂