0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

نوع داده Symbol در Scala چه تفاوتی با String دارد و کاربردش چیست؟

1 پاسخ

+3 امتیاز
قبل توسط (60 امتیاز)

اشیاء در نقاط مختلف حافظه قرار می‌گیرند و الزاما برابر بودن مقدار دو رشته به معنی این نیست که هر دو رشته در یک مکان از حافظه قرار دارند. به عبارت دیگر ممکن است Reference Equal نباشند.

Symbol رشته‌ها را اصطلاحا Intern می‌نماید و به این ترتیب همیشه دو شی Symbol با محتوی یکسان از نظر Reference هم یکی هستند و در یک نقطه از حافظه قرار دارند. به طور کلی استفاده از Symbol به جای String تضمین می‌کند که هر نوع مقایسه‌ای نتیجه یکسان خواهد داشت (Equals، RefrenceEquals، ==).

اما فایده آن چیست؟ بررسی اینکه دو String با هم برابر هستند شامل بررسی تک تک بایت‌های آن است ولی برای بررسی اینکه دو  Symbol با هم برابر هستند کافیست Reference آن‌ها با هم مقایسه شوند، که سریع‌تر از مقایسه String است. در عوض معمولا ایجاد یک شی Symbol زمان بیشتری از ایجاد یک String می‌برد.

قبل توسط (1.1هزار امتیاز)
در حال مطالعه عمیقتر هستم و به جواب خوبی برسم حتما در قالب جواب ایجا مطرح می کنم. فعلا دستگیرم شده که علاوه بر مزیت performance که شما ذکر کردید در matching و reflection و همچنین طراحی DSL ها کاربرد های خوبی داره.
قبل توسط (60 امتیاز)
+1
اینطوری که من از جاهای مختلف خوندم و دیدم توی زبان‌های دینامیک Symbol ها کاربردهای خوبی دارن اما برای زبان‌های استاتیک بخاطر اینکه می‌شه خیلی از این کارهای رو از طریق Typeها انجام داد خیلی نیازی به استفاده از Symbol نیست.

سوالات مشابه

+1 امتیاز
2 پاسخ 2.0هزار بازدید
+1 امتیاز
1 پاسخ 482 بازدید
+1 امتیاز
2 پاسخ 989 بازدید
0 امتیاز
1 پاسخ 1.4هزار بازدید
0 امتیاز
1 پاسخ 606 بازدید
0 امتیاز
1 پاسخ 1.1هزار بازدید
+1 امتیاز
1 پاسخ 356 بازدید
0 امتیاز
0 پاسخ 803 بازدید
...