জাভা টু স্ট্রিংয়ের সমান্তরাল ()


উত্তর:


123

descriptionসম্পত্তি আপনি যা খুঁজছেন হয়। এটি কোনও সম্পত্তি যুক্ত ভেরিয়েবল প্রিন্ট করার সময় এই সম্পত্তিটি অ্যাক্সেস করা হয়।

descriptionপ্রোটোকল গ্রহণ করে CustomStringConvertibleএবং তারপরে descriptionসম্পত্তিটি প্রয়োগ করে আপনি নিজের ক্লাসে যুক্ত করতে পারেন ।

class MyClass: CustomStringConvertible {
    var val = 17

    public var description: String { return "MyClass: \(val)" }
}

let myobj = MyClass()
myobj.val = 12
print(myobj)  // "MyClass: 12"

descriptionআপনি যখন Stringকনস্ট্রাক্টরকে কল করেন তখনও ব্যবহৃত হয় :

let str = String(myobj)  // str == "MyClass: 12"

এটি উদাহরণের বিবরণ অ্যাক্সেসের জন্য প্রস্তাবিত পদ্ধতি (এর বিপরীতে myobj.descriptionযা কোনও শ্রেণি প্রয়োগ না করলে কার্যকর হবে না CustomStringConvertible)


কি হবে String(obj)?
নিলসবট

এছাড়াও আছে .debugDescriptionআরো একটি প্রোগ্রামার বান্ধব সংস্করণের জন্য
nielsbot

4
এটি কাঠামোর জন্য প্রযোজ্য?
lmiguelvargasf

4
হ্যাঁ, কাস্টমস্ট্রিং কনভার্টেবল মুদ্রণযোগ্যকে প্রতিস্থাপন করেছে। @ অ্যান্টোনিও, আমি কখনই এটি পরিবর্তন করেছি তা মনে নেই, তবে এটি অবশ্যই সুইফট ৩-এর অনেক আগে ছিল
ওয়াকাওয়ামা

4
মাইক্লাস অবশ্যই এনএসবজেক্ট
ডিকন

7

যদি শ্রেণীর পরিবর্তে কাঠামো ব্যবহার করা সম্ভব হয় তবে অতিরিক্ত কিছু করার নেই।

কাঠামো আউটপুট থেকে নিজেকে সূক্ষ্ম মুদ্রণ

print("\(yourStructInstance)")

বা এই জাতীয় ক্লাস সহ:

print(String(describing: yourClassInstance))

6

আপনার ব্যবহার করা উচিত String(obj)

কাস্টমস্ট্রিং কনভার্টেবলের জন্য ডকুমেন্টেশন থেকে সরাসরি :

বিঃদ্রঃ

স্ট্রিং (উদাহরণস্বরূপ) যে কোনও ধরণের উদাহরণের জন্য কাজ করবে, উদাহরণটি কাস্টমস্ট্রিংকনভার্টেবল হিসাবে ঘটলে এর বিবরণটি ফিরিয়ে দেয়। কাস্টমস্ট্রিংকনভার্টেবলকে জেনেরিক সীমাবদ্ধতা হিসাবে ব্যবহার করা, বা সরাসরি মেনে চলার ধরণের বিবরণ অ্যাক্সেস করা নিরুৎসাহিত করা হয়।


description()পদ্ধতি CustomStringConvertibleযথেষ্ট হবে বলে মনে হচ্ছে ।
গ্রেগ ব্রাউন

5

এটি কীভাবে NSObjectবর্ধিত ক্লাসগুলির সাথে সম্পন্ন হয়

যদি আপনার মডেল ক্লাসটি প্রসারিত হয় তবে NSObjectআপনাকে নীচে চলকটি ওভাররাইড করতে হবে description:

public override var description: String {
    return "\n{\n index: \(self.index),\n"
        + " country: \(self.name),\n"
        + " isoCountryCode: \(self.isoCountryCode),\n"
        + " localeId: \(self.localeId),\n"
        + " flagImageName: \(self.flagImageName!)\n}"
}

আপনি না পরীক্ষা করতে কিভাবে আমি এটা করেছি এখানে মধ্যে Countryবর্গ মধ্যে "CountryPicker আইওএস সুইফট গ্রন্থাগার"

অথবা, আপনার বোঝার পক্ষে এটি আরও সহজ করার জন্য আপনার শ্রেণি এবং descriptionপদ্ধতিটি নীচের মত দেখতে হবে:

public class MyClass: NSObject {
   public var memberAttribute = "I'm an attribute"

   public override var description: String {
       return "My Class member: \(self.memberAttribute)"
   }
}

দ্রষ্টব্য: যেহেতু আপনি NSObjectএটির থেকে আপনার মডেল ক্লাসটি প্রসারিত করছেন আপনার CustomStringConvertibleক্লাসের আর ক্লাস মেনে চলার প্রয়োজন নেই এবং আপনি নিজে ক্লাস descriptionথেকে পরিবর্তনশীলকে ওভাররাইড করছেন NSObject। সর্বদা মনে রাখবেন, CustomStringConvertibleএটি অর্জনের বেশিরভাগ খাঁটি সুইফট উপায়।

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