সুইফটে একটি অ্যারেতে একটি উপাদান যুক্ত করুন


340

ধরুন আমার উদাহরণস্বরূপ একটি অ্যারে রয়েছে:

var myArray = ["Steve", "Bill", "Linus", "Bret"]

এবং পরে আমি পেতে অ্যারের শেষে একটি উপাদানটি চাপ / সংযোজন করতে চাই:

["Steve", "Bill", "Linus", "Bret", "Tim"]

আমার কোন পদ্ধতিটি ব্যবহার করা উচিত?

এবং অ্যারের সামনের অংশে আমি একটি উপাদান যুক্ত করতে চাইলে সে ক্ষেত্রে কী হবে ? একটি অবিচ্ছিন্ন সময় আনশিফ্ট আছে?


95
স্টিভ জবস, বিল গেটস, লিনাস টোরভাল্ডস, তবে ব্রেট কে? - আমার মনে হয় আমার জানা উচিত (এবং আমি যখন জানতে পারি সম্ভবত আমি নিজেই লাথি
মারব


19
ব্রেট ভিক্টর সঠিক। কথিত আছে যে তাঁর কাজটি দ্রুতগতির অংশগুলির জন্য অনুপ্রেরণা ছিল
ফেলা উইঙ্কেলমোলেন

3
মনে রেখেই আপনি কোনও উপাদানকে নতুন সূচীতে যুক্ত করতে সাবস্ক্রিপ্টটি কখনই ব্যবহার করতে পারবেন না । সাবস্ক্রিপিং কেবলমাত্র একটি মান আপডেট করতে বা বিদ্যমান সূচক থেকে পড়ার জন্য ব্যবহৃত হয় । সুতরাং আপনার যদি থাকে তবে আপনি কখনই বলতে পারবেন না যে এটি সূচি ছাড়িয়ে যাবে ত্রুটির বাইরে । আপনার ব্যবহার করা উচিত । আপনি কেন সাবস্ক্রিপ্ট করতে পারবেন না? একই কারণে আপনি ব্যবহার করতে পারবেন না কারণ জন্য । 3 য় সূচক একটি মানের আগে অ্যারে [0] হিসাবে অস্তিত্বহীন! let array = [Int]()array[0] = 42array.append(42)letters[3] = dlet letters = [a,b,c]
মধু

4
কীভাবে এটি করবেন তাকে শিখিয়ে দিবেন না। টিমকে এই অ্যারেটিতে থাকা দেওয়া উচিত নয়, এটি অন্যদের জন্য এটি অপমান ....
ওটজিই

উত্তর:


604

সুইফট 3/4/5 হিসাবে , এটি নিম্নলিখিত হিসাবে করা হয়।

অ্যারের শেষে একটি নতুন উপাদান যুক্ত করতে।

anArray.append("This String")

আপনার অ্যারের শেষে আলাদা অ্যারে সংযুক্ত করতে।

anArray += ["Moar", "Strings"]
anArray.append(contentsOf: ["Moar", "Strings"])

আপনার অ্যারেতে একটি নতুন উপাদান Toোকাতে।

anArray.insert("This String", at: 0)

আপনার অ্যারেতে আলাদা অ্যারের সামগ্রী সন্নিবেশ করানোর জন্য।

anArray.insert(contentsOf: ["Moar", "Strings"], at: 0)

110 টি পৃষ্ঠা থেকে শুরু করে " দ্য সুইফ্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ " এর "সংগ্রহের ধরণগুলি" অধ্যায়ে আরও তথ্য পাওয়া যাবে ।


2
দুর্দান্ত উত্তর। অ্যাপল যেভাবে প্রয়োগ করেছে তাতে অসঙ্গতি এক ধরনের বিরক্তিকর। সম্ভবত, anArray + = "Foo" anArray + = ["Foo"] হিসাবে একই কাজ করে , ব্যক্তিগতভাবে, আমি নিজেকে বিভ্রান্ত করা এড়াতে কেবল পরের সিনট্যাক্সটি ব্যবহার করব।
original_username

11
anArray + = "ফু" এক্সকোড 6 বিটা 5 থেকে আর কাজ করে না
অমিতায়ে

আপনিও অ্যারে তৈরি করতে এবং পূরণ করতে পদ্ধতির তালিকা এবং ফাংশনগুলির একটি তালিকা করতে পারেন ?? : ডি

1
এটা রান সময় ব্যর্থ। অ্যারেতে ইতিমধ্যে এমন উপাদান রয়েছে যা আমি inোকানোর চেষ্টা করছি, তাই এটি নয়। আমার কার্যকার্য হ'ল আমি যে উপাদানটি inোকানোর চেষ্টা করছি তার সাথে একটি নতুন অ্যারে তৈরি করা এবং তারপরে মূল অ্যারে থেকে সমস্ত উপাদান যুক্ত করা app খুব নিশ্চিত যে এটি অন্য কোথাও ধরে রাখা সমস্যার ফল - কোনও কোনওরকম এই বিষয়গুলি তাদের মূল অ্যারে স্পটগুলিতে রেখে দেওয়া পর্যন্ত এতক্ষণ ঠিক আছে, তবে আইওএস যদি তাদের স্থানান্তরিত করার চেষ্টা করে (সন্নিবেশের ফলে) একটি ক্র্যাশ ঘটে। অন্যথায় এটি কিছু অদ্ভুত সুইফট / আইবি সমস্যা।
মুসিজিনিসিস

1
spliceinsertContentsOfসুইফট 2
আলমাস সাপর্গালি

21

আপনি চাইলে কোনও ভেরিয়েবল এবং / অথবা অবজেক্টেও পাস করতে পারেন।

var str1:String = "John"
var str2:String = "Bob"

var myArray = ["Steve", "Bill", "Linus", "Bret"]

//add to the end of the array with append
myArray.append(str1)
myArray.append(str2)

তাদের সামনের দিকে যুক্ত করতে:

//use 'insert' instead of append
myArray.insert(str1, atIndex:0)
myArray.insert(str2, atIndex:0)

//Swift 3
myArray.insert(str1, at: 0)
myArray.insert(str2, at: 0)

অন্যরা ইতিমধ্যে জানিয়েছে, আপনি আর xCode 6.1 হিসাবে '+ =' ব্যবহার করতে পারবেন না


2
কোনও .prepend()ফাংশনের অভাবের সাথে , মাথায়
অ্যাটিকাস

1
এটি খুব স্পষ্ট যে আপনি এখনও + = ব্যবহার করতে পারেন তবে কোনও একক উপাদানের জন্য নয়।
লিও ডাবাস

17

শেষ যোগ করতে +=অপারেটরটি ব্যবহার করুন :

myArray += ["Craig"]
myArray += ["Jony", "Eddy"]

অপারেটরটি সাধারণত append(contentsOf:)পদ্ধতির সমতুল্য । (এবং সত্যই পুরানো সুইফ্ট সংস্করণগুলিতে একই উপাদান ধরণের অন্যান্য সংগ্রহগুলি নয়, একক উপাদান যুক্ত করতে পারে could)

insert(_:at:)যে কোনও সূচীতে serোকানোর জন্যও রয়েছে ।

যদি, বলুন, আপনি শুরুতে serোকানোর জন্য কোনও সুবিধাজনক ফাংশন চান, আপনি এটি Arrayএকটি বর্ধনের সাথে শ্রেণিতে যুক্ত করতে পারেন ।


যদি myArrayটাইপ হয় Arrayতবে প্রথম লাইনটি ভুল is +=উভয় অপারেটর শুধুমাত্র ব্যবহার করা যেতে পারে myArrayএবং ডান প্রতীক ধরনের Array
বার্ট জ্যাকবস

1
আমি এই উত্তরটি পোস্ট করার সময় এটি ঠিক ছিল, তবে ভাষাটি বদলেছে। উত্তর আপডেট হয়েছে।
রিক্সার

এই বলে যে +=appendসমতুল্য সাবেক অস্থায়ী অ্যারের অপারেটর ফাংশন হ্রাস এটা যত তাড়াতাড়ি পরিত্যাগ করা হবে সৃষ্টির জড়িত সঠিক নয়।
ক্রিশটিক

10

+ = এবং + অপারেটর ব্যবহার করুন:

extension Array {

}

func += <V> (inout left: [V], right: V) {
    left.append(right)
}

func + <V>(left: Array<V>, right: V) -> Array<V>
{
    var map = Array<V>()
    for (v) in left {
        map.append(v)
    }

    map.append(right)

    return map
}

তারপরে ব্যবহার করুন:

var list = [AnyObject]()
list += "hello" 
list += ["hello", "world!"]
var list2 = list + "anything"

দ্বিতীয় ফাংশনে, বাম অ্যারে দিয়ে পুনরাবৃত্তি করার প্রয়োজন নেই। করা var copy = leftএবং তারপরে সংযোজনই copy.append(right)যথেষ্ট। সুইফ্টে, অ্যারেগুলি মান ধরণের, রেফারেন্সের ধরণের নয়।
নাটান আর।

4

আপনি যদি প্রথম অবস্থানে আইটেমটি হারিয়ে না ফেলে অ্যারের শুরুতে সন্নিবেশ করতে চান তবে এখানে একটি ছোট এক্সটেনশন is

extension Array{
    mutating func appendAtBeginning(newItem : Element){
        let copy = self
        self = []
        self.append(newItem)
        self.appendContentsOf(copy)
    }
}

ত্রুটি: 'অ্যারে <এলিমিটি>' টাইপের মানটির 'অ্যাপেন্ডকন্টেন্টস অফ' নেই
ড্যানি

3

সুইফটে 4.1 এবং এক্সকোড 9.4.1 এ

আমরা মূলত দুটি উপায়ে অ্যারেতে যুক্ত করতে পারি

let stringOne = "One"
let strigTwo = "Two"
let stringThree = "Three"
var array:[String] = []//If your array is string type

ধরন 1)

//To append elements at the end
array.append(stringOne)
array.append(stringThree)

টাইপ 2)

//To add elements at specific index
array.insert(strigTwo, at: 1)

আপনি যদি দুটি অ্যারে যোগ করতে চান

var array1 = [1,2,3,4,5]
let array2 = [6,7,8,9]

let array3 = array1+array2
print(array3)
array1.append(contentsOf: array2)
print(array1)

2

সুইফ্ট প্রোগ্রামিং ভাষার 143 পৃষ্ঠা থেকে:

আপনি অ্যারের শেষে একটি নতুন আইটেম যুক্ত করতে পারবেন অ্যারের অ্যাপেন্ড পদ্ধতিতে কল করে

বিকল্পভাবে, অতিরিক্ত অ্যাসাইনমেন্ট অপারেটর (+ =) সহ একটি অ্যারের শেষে একটি নতুন আইটেম যুক্ত করুন

এর উত্স: অ্যাপল ইনক। "দ্য সুইফ্ট প্রোগ্রামিং ভাষা।" iBooks। https://itun.es/us/jEUH0.l


2

প্রস্তাবিত সমাধানগুলিতেappend যোগ করার জন্য , এটি জেনে রাখা কার্যকর যে এটি বেশিরভাগ ক্ষেত্রে একটি নিয়মিত ধ্রুবক সময় অপারেশন:

জটিলতা: স্বতঃস্থায়ী স্টোরেজ অন্য লাইভ অ্যারের সাথে ভাগ না করা হলে ইমোরাইজড ও (1); ও (গণনা) যদি স্ব ব্রিজযুক্ত এনএসআরিকে মোড় না দেয়; অন্যথায় দক্ষতা নির্ধারিত।

আমি consসুইফ্টের মতো একজন অপারেটর খুঁজছি । আসল অ্যারেটি পরিবর্তন না করে স্থির সময়ে স্থিতিতে লাগানো উপাদানটির সাথে এটি একটি নতুন অবিচ্ছেদ্য অ্যারে ফিরিয়ে আনা উচিত । আমি এখনও কোনও মানক ফাংশন পাইনি যা এটি করে। আমি যদি একটি খুঁজে পাই তবে রিপোর্ট করার জন্য মনে রাখার চেষ্টা করব!


1

আপনি ব্যবহার করতে পারেন

Myarray.insert("Data #\(index)", atIndex: index)

1

আপনি যদি অনন্য অবজেক্ট যুক্ত করতে চান তবে আপনি অ্যারে স্ট্রাক্টটি প্রসারিত করতে পারেন

extension Array where Element: Equatable {
    mutating func appendUniqueObject(object: Generator.Element) {
        if contains(object) == false {
            append(object)
        }
    }
}

1

অ্যারেটি যদি এনএসআরে হয় তবে আপনি অ্যারের addingশেষে কোনও অবজেক্ট যুক্ত করতে ফাংশনটি ব্যবহার করতে পারেন :

সুইফট 4.2

var myArray: NSArray = []
let firstElement: String = "First element"
let secondElement: String = "Second element"

// Process to add the elements to the array
myArray.adding(firstElement)
myArray.adding(secondElement)

ফলাফল :

print(myArray) 
// ["First element", "Second element"]

এটি একটি খুব সহজ উপায়, আদর!


1

সুইফটে 4.2 এ: আপনি ব্যবহার করতে পারেন

myArray.append("Tim") //To add "Tim" into array

অথবা

myArray.insert("Tim", at: 0) //Change 0 with specific location 

0

উদাহরণ: শিক্ষার্থী = ["বেন", "আইভী", "জর্ডেল"]

1) অ্যারের শেষে একক উপাদান যুক্ত করতে, অ্যাপেন্ড ব্যবহার করুন (_ :)

students.append(\ "Maxime" )

২) একই সাথে অন্য অ্যারে বা কোনও ধরণের ক্রম সংযোজন করে অ্যাপেন্ডে (বিষয়বস্তু :) পদ্ধতিতে একাধিক উপাদান যুক্ত করুন

students.append(contentsOf: ["Shakia" , "William"])

3) একক উপাদানের জন্য সন্নিবেশ (_: এ :) পদ্ধতিটি ব্যবহার করে একটি অ্যারের মাঝখানে নতুন উপাদান যুক্ত করা

students.insert("Liam" , at:2 )

4) অন্য সংগ্রহ বা অ্যারে আক্ষরিক থেকে একাধিক উপাদান সন্নিবেশ করতে সন্নিবেশ (বিষয়বস্তু: এ :) ব্যবহার করে

students.insert(['Tim','TIM' at: 2 )

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