রুবির একটি নতুন সংস্করণ নতুন বৈশিষ্ট্য এবং কর্মক্ষমতা উন্নতি নিয়ে আসছে৷
৷আপনি কি পরিবর্তনগুলি বজায় রাখতে চান?
চলুন দেখে নেওয়া যাক!
অন্তহীন রেঞ্জ
রুবি 2.5 এবং পুরানো সংস্করণগুলি ইতিমধ্যেই একটি অফুরন্ত পরিসীমা সমর্থন করে (Float::INFINITY
সহ ), কিন্তু রুবি 2.6 এটিকে পরবর্তী স্তরে নিয়ে যায়৷
নতুন অন্তহীন পরিসর এই মত দেখায়:
(1..)
এটি একটি নিয়মিত পরিসর থেকে আলাদা কারণ এটিতে (1..10)
এর মতো শেষের মান নেই .
উদাহরণ ব্যবহার :
["a", "b", "c"].zip(1..)# [["a", 1], ["b", 2], ["c", 3]][ 1,2,3,4,5][1..]# [2, 3, 4, 5](1..)।পদক্ষেপ(5) নিন (100)# [1, 6, 11, 16, 21, 26, 31, 36, 41, 46]
আপনি অন্য কোন উদাহরণের সাথে আসতে পারেন?
গণনাযোগ্য::ArithmethicSequence
Ruby 2.6.
-এ একটি নতুন ধরনের গণনাযোগ্য বস্তু চালু করা হয়েছে
আমি Enumerable::ArithmethicSequence
সম্পর্কে কথা বলছি .
এই মুহূর্তে দুটি পদ্ধতি আছে যা আপনাকে দেয় একটি ArithmethicSequence
:
- পরিসীমা#পদক্ষেপ
- সংখ্যাসূচক#ধাপ
এই সম্পর্কে বিশেষ কি?
একটি ArithmethicSequence
কয়টি উপাদান আছে, প্রথম উপাদান এবং শেষ উপাদানটি কী তা জানে৷
উদাহরণ :
<প্রে>(1..10)।পদক্ষেপ(2)।প্রথম# 1(1..10)।পদক্ষেপ(2)।শেষ# 9
এইগুলি first
&last
রুবি 2.6 এর আগে পদ্ধতিগুলি উপলব্ধ নয় এবং সেই কারণেই ArithmethicSequence
এখন বিদ্যমান!
আরেকটি পার্থক্য :
(1..10)।পদক্ষেপ(2) ==(1..10)।পদক্ষেপ(2)# মিথ্যা - রুবি 2.5 (এবং পুরানো)(1..10)।পদক্ষেপ(2) ==( 1..10) ধাপ(2)# সত্য - রুবি 2.6
পাটিগণিতের ক্রমগুলি একে অপরের সাথে 2.6 এ তুলনা করা যেতে পারে।
একাধিক আর্গুমেন্ট সহ হ্যাশ মার্জ করুন
আপনি যদি একাধিক হ্যাশ মার্জ করতে চান যাতে আপনি সেগুলিকে একত্রিত করতে পারেন…
আপনি এটি করতে পারেন৷ :
a ={ a:1 }b ={ b:2 }c ={ c:3 }a.merge(b).merge(c)# {:a=>1, :b=>2, :c=>3}
রুবি 2.6 একটি নতুন উপায় যোগ করে :
a.merge(b, c)# {:a=>1, :b=>2, :c=>3}
একই ফলাফল, কিন্তু আপনি শুধুমাত্র একবার পদ্ধতি কল করতে হবে!
নতুন ব্যতিক্রম বিকল্প
যখন আপনি Integer
এর মত একটি রূপান্তর পদ্ধতি ব্যবহার করেন যদি মানটি রূপান্তর করা না যায় তবে আপনি একটি ব্যতিক্রম পাবেন৷
উদাহরণ :
পূর্ণসংখ্যা("a")# আর্গুমেন্ট ত্রুটি (পূর্ণসংখ্যার জন্য অবৈধ মান():"a")
রুবি 2.6 একটি নতুন exception
যোগ করে মূলশব্দ যুক্তি:
- পূর্ণসংখ্যা()
- ফ্লোট()
- যৌক্তিক()
- জটিল()
আপনি এই কীওয়ার্ড দিয়ে এই পদ্ধতির আচরণ নিয়ন্ত্রণ করতে পারেন।
উদাহরণ :
পূর্ণসংখ্যা("a", ব্যতিক্রম:মিথ্যা)# শূন্য
Random.bytes
আপনার কিছু র্যান্ডম বাইট প্রয়োজন হলে রুবি 2.6 একটি নতুন bytes
যোগ করে Random
করার পদ্ধতি ক্লাস।
এখানে একটি উদাহরণ আছে :
Random.bytes(10)# "\xCD\r\xE6Wz\xBA)\x02\xC4\xDB"
এটি সম্পূর্ণ নতুন কার্যকারিতা নয় কারণ এটি সবসময় securerandom
এর মাধ্যমে পাওয়া যায় মডিউল।
'securerandom'SecureRandom.bytes(10) প্রয়োজন
তাহলে এই নতুন পদ্ধতি নিয়ে বিরক্ত কেন?
Random.bytes
গতির জন্য নিরাপত্তার ব্যবসা করে, এটি SecureRandom
এর চেয়ে 8x দ্রুত .
পরিসীমা#%
একটি নতুন %
পদ্ধতিটি Range
-এ যোগ করা হয়েছে রুবি 2.6 এ।
উদাহরণ :
(0..) % 2) নিন (5)# [0, 2, 4, 6, 8]
এই পদ্ধতিটি Range#step
এর সমতুল্য .
ট্রেসপয়েন্ট#প্যারামিটার
TracePoint
ক্লাস আপনাকে মেথড কল, ক্লাস ডেফিনিশন এবং থ্রেডের মতো ইভেন্ট ট্রেস করতে সাহায্য করে।
রুবি 2.6 একটি নতুন parameters
যোগ করে পদ্ধতি।
এই নতুন পদ্ধতির সাহায্যে আপনি কল করা পদ্ধতির প্যারামিটার তালিকা প্রিন্ট করতে পারেন।
উদাহরণ :
TracePoint.trace(:call, :b_call, :c_call) do |tp| p [tp.event, tp.parameters]enddef orange(a,b,c*)endorange(1,2,3)
এতে ফলাফল :
[:কল, [[:req, :a], [:req, :b], [:rest, :c]]]
ক্ষণস্থায়ী হিপ
ক্ষণস্থায়ী হিপ হল স্বল্পস্থায়ী বস্তুর জন্য কর্মক্ষমতার উন্নতি যার লক্ষ্য মেমরি ফ্র্যাগমেন্টেশনের সমস্যা এবং ম্যালোকে ধীরগতির কল করা।
Malloc যেভাবে রুবি ইন্টারপ্রেটার (এবং বেশিরভাগ সি প্রোগ্রাম) মেমরিকে অনুরোধ করে অপারেটিং সিস্টেম থেকে।
নিউজ এন্ট্রি অনুসারে, আমরা 6-7% গতির দিকে তাকিয়ে আছি৷
৷আমি কিছু বেঞ্চমার্ক চালিয়েছি:
অনেকগুলি হ্যাশ 10টি উপাদানের চেয়ে ছোট তৈরি করার সময় এটি সবচেয়ে কার্যকর বলে মনে হচ্ছে .
এই ফলাফলগুলির উপর ভিত্তি করে রুবি 2.6 (প্রিভিউ 3) এ বড় হ্যাশগুলি ধীর।
অন্যান্য বস্তু যা অস্থায়ী হিপ থেকে উপকৃত হতে পারে :
- অ্যারে
- গঠন
- নিয়মিত বস্তু (আপনার তৈরি করা ক্লাস থেকে)
অ্যারে#ইউনিয়ন এবং অ্যারে#পার্থক্য
দুটি নতুন পদ্ধতি, union
&difference
Array
-এ যোগ করা হয় রুবি 2.6 এ ক্লাস।
উদাহরণ :
[1,2,3,4,5].পার্থক্য([3])# [1, 2, 4, 5][1,2,3,4,5].ইউনিয়ন([5,6, 7])# [1, 2, 3, 4, 5, 6, 7]
এই নতুন পদ্ধতিতে একাধিক আর্গুমেন্ট লাগে।
সারাংশ
রুবি 2.6 আপনাকে কম সময়ে আরও ভাল কোড লিখতে সাহায্য করার জন্য নতুন দরকারী বৈশিষ্ট্য নিয়ে আসছে। আরেকটি নতুন কর্মক্ষমতা-সম্পর্কিত বৈশিষ্ট্য, MJIT (পদ্ধতি ভিত্তিক জাস্ট-ইন-টাইম কম্পাইলার) একটি উত্সর্গীকৃত নিবন্ধে কভার করা হবে৷
রুবি 2.6 25 ডিসেম্বর, 2018 এ মুক্তি পাবে বলে আশা করা হচ্ছে .
আপনি যদি পরিবর্তনগুলির সাথে তাল মিলিয়ে চলতে চান, আপনার রুবি দক্ষতা উন্নত করুন এবং একজন দুর্দান্ত রুবি বিকাশকারী হয়ে উঠুন আজই আমার রুবি নিউজলেটারে যোগ দিতে ভুলবেন না৷
পড়ার জন্য ধন্যবাদ!