স্কালায় সাবহারি পাওয়ার সঠিক উপায় কী?


96

আমি স্কালায় একটি সাববারে পাওয়ার চেষ্টা করছি এবং এটি করার সঠিক উপায়টি কী তা নিয়ে আমি কিছুটা বিভ্রান্ত। আমি সবচেয়ে বেশি যা চাই তা হ'ল আপনি কীভাবে অজগরটিতে এটি করতে পারেন তা হ'ল:

x = [3, 2, 1]
x[0:2]

তবে আমি মোটামুটি নিশ্চিত যে আপনি এটি করতে পারবেন না।

এটি করার সর্বাধিক সুস্পষ্ট উপায় হ'ল জাভা অ্যারে ব্যবহারের লাইব্রেরি ব্যবহার করা।

import java.util.Arrays
val start = Array(1, 2, 3)
Arrays.copyOfRange(start, 0, 2)

তবে স্কালায় জাভা লাইব্রেরিগুলি ব্যবহার করতে এটি সর্বদা আমাকে কিছুটা ময়লা বোধ করে। আমি এটির সর্বাধিক "স্কেলিক" উপায়টি পেয়েছি

def main(args: List[String]) {
    val start = Array(1, 2, 3)
    arrayCopy(start, 0, 2)
}
def arrayCopy[A](arr: Array[A], start: Int, end: Int)(implicit manifest: Manifest[A]): Array[A] = {
    val ret = new Array(end - start)
    Array.copy(arr, start, ret, 0, end - start)
    ret
}

তবে এর চেয়ে ভাল উপায় আর কি আছে?

উত্তর:


133

আপনি স্লাইস পদ্ধতিতে কল করতে পারেন:

scala> Array("foo", "hoo", "goo", "ioo", "joo").slice(1, 4)
res6: Array[java.lang.String] = Array(hoo, goo, ioo)

এটি অজগর মত কাজ করে।


4
ওহ, অবশ্যই, অ্যারেঅপ্স স্কেলা- lang.org/api/current/scala/collection/ পরিবর্তনযোগ্য/… , আমি বোবা।
nnythm

হ্যাঁ আপনি ঠিক. আমি আবদ্ধ সম্মেলন উল্লেখ করছিলাম। নিম্ন সীমাটি অন্তর্ভুক্ত করা হয় এবং উপরেরটি বাদ দেওয়া হয়। নেই কোন পিছনে :
প্যারাডিজমেটিক

@nnythm লিঙ্কটি প্রধান।
আমির এ। শাবানী

দেখে মনে হচ্ছে যে আমি বাসি কোনও মন্তব্য সম্পাদনা করতে পারছি না, তবে একটি জীবন্ত লিঙ্কটি হ'ল: স্কালা-lang.org/api/2.12.8/scala/collection/mutable/…
nnythm

15

কল্পনা করুন আপনার কাছ থেকে উপাদানের সঙ্গে একটি অ্যারে আছে aকরতেf

scala> val array = ('a' to 'f').toArray // Array('a','b','c','d','e','f')

তারপরে আপনি এ থেকে একটি উপ-অ্যারে বিভিন্ন উপায়ে বের করতে পারেন:

  1. এর সাথে প্রথম এন প্রথম উপাদানগুলি ফেলে দেওয়া হচ্ছে drop(n: Int)

    array.drop(2) // Array('c','d','e','f')

  2. সাথে প্রথম এন উপাদানগুলি নিয়ে যান take(n: Int)

    array.take(4) // Array('a','b','c','d')

  3. এর সাথে উপাদানগুলির যে কোনও বিরতি নির্বাচন করুন slice(from: Int, until: Int) । নোট যে untilবাদ দেওয়া হয়।

    array.slice(2,4) // Array('c','d')

    স্লাইস পদ্ধতিটি কঠোর সমান:
    array.take(4).drop(2) // Array('c','d')

  4. এর সাথে শেষ এন উপাদানগুলি বাদ দিন dropRight(n: Int):

    array.dropRight(4) // Array('a','b')

  5. এর সাথে শেষ এন উপাদানগুলি নির্বাচন করুন takeRight(n: Int):

    array.takeRight(4) // Array('c','d','e','f')

তথ্যসূত্র : সরকারী ডকুমেন্টেশন


1

2D স্কাল অ্যারে (মূল_আরে) থেকে নির্দিষ্ট কলামগুলি বের করার উদাহরণ:

import scala.collection.mutable.ArrayBuffer

val sub_array = ArrayBuffer[Array[String]]()
val columns_subset: Seq[String] = Seq("ColumnA", "ColumnB", "ColumnC")
val columns_original = original_array(0)

for (column_now <- columns_subset) {
      sub_array += original_array.map{_(columns_original.indexOf(column_now))}
    }
sub_array
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.