Struct, OpenStruct ושמירת מידע ברובי

רובי מכילה מספר אפשרויות לאגד מידע, כדוגמת מערך מבוסס אינדקס ומערך מבוסס שם וערך (hash) .אך ישנם שתי מחלקות פחות מוכרות אשר מאפשרות לשמור קבוצה של מידע כמחלקה:

  1. Struct
  2. OpenStruct

ההבדל העיקרי בניהן הוא לא רק ש Struct מהירה יותר, אלא המבנה של Struct מקובע. כלומר הגדרת השדות מתבצעת בזמן יצירת המחלקה, ולאחר היצירה לא ניתן להוסיף או למחוק שדות, בעוד כי OpenStruct מאפשרת להוסיף ולמחוק שדות גם לאחר יצירת האובייקט, אבל כאמור, המחלקה איטית יותר בביצועים שלה.

בשורה התחתונה, המטרה של המחלקות היא בעצם ליצור אובייקט עם שדות הניתנים לאיחזור ושינוי הנתונים שלהם, ממש כמו struct ו record בשפות אחרות.

התחלת עבודה עם struct:

Users = Struct.new(:username, :password, :salt, :first_name, :middle_name, :last_name, :email)
user = Users.new(:first_name => 'i')
user.username = 'ik'
user[:password] = 'secret'
user[2] = 'pepper'
user['email'] = 'spamme@example.com'
...

למעשה בהדגמה הזו, יצרתי מחלקה עם שדות בשם Users, המחלקה מכילה את שדות username, password, salt, first_name, middle_name, last_name ו email.
לאחר מכן, יצרתי אובייקט בשם user מהמחלקה Users ובעת היצירה הזנתי את השדות במספר צורות כדוגמת שימוש ישיר בשם השדה, שימוש בסימבול המייצג את השם של השדה, המיקום של השדה בסדר שיצרנו את השדות ושימוש בשם השדה, וכמובן בעת היצירה עצמה של האובייקט.

התחלת העבודה עם OpenStruct:

require 'ostruct' # mandatory to support it

user = OpenStruct.new(:username => 'joe', salt: 'sea')
user.password = '1234'

כאן יצרנו אובייקט בשם user אשר קיבל בעת היצירה שני שדות: username ו salt. כאשר OpenStruct מחייב בצורה הזו להזין להם גם ערכים.
לאחר מכן, הגדרנו שדה בשם password ונתנו לו ערך.
אלו הדרכים שאפשר להזין ולהשתמש במידע עם OpenStruct.

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s