একটি ভিন্ন বিষয় হ'ল প্রথম বাক্যটি এইরূপে পার্স করা হয়েছে:
scala> List(1,2,3).++(List(4,5))
res0: List[Int] = List(1, 2, 3, 4, 5)
যেখানে দ্বিতীয় উদাহরণটি বিশ্লেষণ করা হয়েছে:
scala> List(4,5).:::(List(1,2,3))
res1: List[Int] = List(1, 2, 3, 4, 5)
সুতরাং আপনি যদি ম্যাক্রো ব্যবহার করছেন তবে আপনার যত্ন নেওয়া উচিত।
পাশাপাশি ++
দুটি তালিকার জন্য কল করা হচ্ছে:::
তবে আরও ওভারহেড রয়েছে কারণ এটি তালিকা থেকে তালিকাতে কোনও বিল্ডারকে অন্তর্নিহিত মানের জন্য জিজ্ঞাসা করছে। তবে মাইক্রোব্যাঙ্কমার্কস সেই অর্থে কার্যকর কিছু প্রমাণ করতে পারেনি, আমি অনুমান করি যে সংকলক এই জাতীয় কলগুলি অনুকূল করে izes
উষ্ণায়নের পরে মাইক্রো-বেঞ্চমার্কগুলি।
scala>def time(a: => Unit): Long = { val t = System.currentTimeMillis; a; System.currentTimeMillis - t}
scala>def average(a: () => Long) = (for(i<-1 to 100) yield a()).sum/100
scala>average (() => time { (List[Int]() /: (1 to 1000)) { case (l, e) => l ++ List(e) } })
res1: Long = 46
scala>average (() => time { (List[Int]() /: (1 to 1000)) { case (l, e) => l ::: List(e ) } })
res2: Long = 46
ড্যানিয়েল সি। সোব্রাই যেমন বলেছিলেন, আপনি যে কোনও সংগ্রহের বিষয়বস্তু ব্যবহার করে কোনও তালিকায় যুক্ত করতে পারেন ++
, তবে আপনার সাথে :::
কেবল তালিকাগুলিই সংগৃহীত করতে পারে।
:::
সমস্ত পদ্ধতির মতো একটি উপসর্গ অপারেটর: