স্ট্রিংসের কোনও ভেক্টরের তুলনায় জোড় অপারেটরের সমতুল্য কত?


120

StringS এর কোনও ভেক্টরের উপরে "যোগদান" অপারেটরের জন্য মরিচা সমতুল্য আমি খুঁজে পাইনি । আমার একটি আছে Vec<String>এবং আমি তাদের একক হিসাবে যোগ দিতে চাই String:

let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = something::join(string_list,"-");
assert_eq!("Foo-Bar", joined);

সম্পর্কিত:

উত্তর:


153

মরিচা 1.3.0 এবং তারপরে, joinউপলভ্য:

fn main() {
    let string_list = vec!["Foo".to_string(),"Bar".to_string()];
    let joined = string_list.join("-");
    assert_eq!("Foo-Bar", joined);
}

1.3.0 এর আগে এই পদ্ধতিটি বলা হত connect:

let joined = string_list.connect("-");

নোট করুন যে পদ্ধতিগুলি স্বয়ংক্রিয়ভাবে স্ট্যান্ডার্ড লাইব্রেরির উপস্থাপক দ্বারা আমদানি করা হওয়ায় আপনার কিছু আমদানি করার দরকার নেই ।


7
সম্ভবত এটি পরিবর্তিত হয়েছে, তবে SliceConcatExtকেবল রাত্রে।

5
@ এভের্ট বৈশিষ্ট্যটি অস্থির হিসাবে চিহ্নিত হয়েছে, তবে এর পদ্ধতিগুলি স্থিতিশীল তাই আপনি সেগুলি ব্যবহার করতে পারেন। আপনার স্পষ্টভাবে useবৈশিষ্ট্যের প্রয়োজন নেই কারণ এটি উপস্থাপিত।
ইন্টারজয়


1
@ শিপমাস্টার আমি যদি আপনার 'জবাব' সঠিকভাবে পড়ি তবে একটি joinইন-আছে itertools
স্টিভ পাওয়েল

2
আপনাকে ধন্যবাদ @ শিপমাস্টার। দুর্ভাগ্যক্রমে, অন্য উত্তরের আপনার অজানা রেফারেন্সটি বরং ক্রিপ্টিক ছিল, সুতরাং সেই উত্তরটির কোন অংশটি প্রাসঙ্গিক ছিল তা মোটেই পরিষ্কার ছিল না। যদিও আপনার মন্তব্য, সংশোধন এবং উত্তরগুলি নিখুঁতভাবে দুর্দান্ত তবে আপনার স্টাইলটি সংশ্লেষিত এবং অফ-পপিং।
স্টিভ পাওয়েল


10

itertoolsক্রেট থেকে একটি ফাংশনও বলা হয় joinযা একটি পুনরাবৃত্তকারীকে যোগ দেয়:

extern crate itertools; // 0.7.8

use itertools::free::join;
use std::fmt;

pub struct MyScores {
    scores: Vec<i16>,
}

impl fmt::Display for MyScores {
    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
        fmt.write_str("MyScores(")?;
        fmt.write_str(&join(&self.scores[..], &","))?;
        fmt.write_str(")")?;
        Ok(())
    }
}

fn main() {
    let my_scores = MyScores {
        scores: vec![12, 23, 34, 45],
    };
    println!("{}", my_scores); // outputs MyScores(12,23,34,45)
}

6
এই কোডটির ব্যবহারকারীদের সচেতন হওয়া উচিত যে এটি সম্ভবত এটি ফেলে দেওয়ার জন্য একটি সম্ভাব্য বৃহত স্ট্রিং বরাদ্দ করে। আউটপুটটিতে সরাসরি স্ট্রিং লিখতে এটি আরও দক্ষ। এছাড়াও দেখুন মরিচায় ফাঁকা জায়গা দ্বারা পৃথক পৃথক একটি মুদ্রণ করার একটি মূio় উপায় কি? , মরিচায়, একটি পাত্রে প্রতিটি মানের মধ্যে কিছু মুদ্রণের সর্বোত্তম উপায় কী?
শেপমাস্টার

2
বোধগম্য, যদিও প্রশ্নটি সম্পর্কে ছিল join, উপায়গুলি কীভাবে বিন্যাসের অ্যালগরিদমকে অনুকূল করা যায়, না?
নিক লিঙ্কার

6
collect+ + joinদ্রুততর এবং কোন নির্ভরতা যোগ করে, এই দেখুন সারকথা একটি বেঞ্চমার্ক জন্য
murlakatamenka
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.