মরিচায় 'x x x' কী করতে পারে?


117

আমি বন্য মধ্যে এই কোড দেখেছি :

fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;

let fields = fields;লাইনটি কী করে ? ওখানে কেন?

উত্তর:


144

এটি fieldsআবার পরিবর্তনযোগ্য করে তোলে ।

fieldsপূর্বে পরিবর্তিত ( let mut fields = …;) হিসাবে সংজ্ঞায়িত করা হয়েছিল , sort_by_keyযা জায়গায় স্থানে বাছাই করে তা ব্যবহার করতে হবে এবং টার্গেটের পরিবর্তনীয় হতে হবে। স্পষ্টভাবে আরও পরিব্যক্তি রোধ করতে লেখক এখানে বেছে নিয়েছেন।

"ডাউনগ্রেডিং" অপরিবর্তনীয়কে আবশ্যক বাঁধাই জংতে খুব সাধারণ common

এটি করার আর একটি সাধারণ উপায় হ'ল একটি ব্লক এক্সপ্রেশন ব্যবহার করা:

let fields = {
    let mut fields =;
    fields.sort_by_key();
    fields
};

44
অথবা আপনার দৃষ্টিভঙ্গির উপর নির্ভর করে "আপগ্রেডিং"।
সিনেসো

8
আইএমওতে আপনার লেখার অন্য কোনও উপায়টি যাবার উপায়: আমাদের যখন এটি ব্যবহার করার দরকার হয় তখন পরিবর্তনীয় পরিবর্তনশীলটি স্কোপ করা হয় এবং তারপরে এটি সরানো হয়। এটি শব্দার্থগতভাবে আরও ভাল।
বোয়াইটিওস

@ ডার্থবয়েথিয়োস একটি বা অন্যগুলি সংকলিত কোডে কিছু পরিবর্তন করে? অতিরিক্ত, অকেজো নির্দেশ যুক্ত করার মতো? বা অপরিবর্তনযোগ্যতা অনুমানের উপর ভিত্তি করে সংকলক দ্বারা আরও আক্রমণাত্মক অপটিমেশন সক্ষম করা?
iago-lito '২২

1
@ আইগো-লিটো সত্যই, আমি নিশ্চিত নই, তবে আমার অশিক্ষিত অনুমান যে কোনও কিছুই পরিবর্তন করে না।
বোয়িথিওস

1
@ আইগো-লিটো এখনই এটি বাস্তবে! তবে এটি একটি ত্রুটি হিসাবে বিবেচিত হয় এবং সম্ভবত এটি কোনও সময়ে সংশোধন করা হতে পারে।
ম্যাকার্টন

19

বিবৃতি let var = var; তোলে varঅপরিবর্তনীয় এবং তার বর্তমান মান বাধ্য। আগে fieldsহিসাবে ঘোষণা করা mutহয়েছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.