ruby সব কিন্তু রুবি অ্যারের শেষ উপাদান




ruby stone (12)

সম্ভবত ...

a = t               # => [1, 2, 3, 4]
a.first a.size - 1  # => [1, 2, 3]

অথবা

a.take 3

অথবা

a.first 3

অথবা

a.pop

যা শেষ হবে এবং আগে সবকিছু দিয়ে অ্যারে ছেড়ে

বা কম্পিউটারের ডিনারের জন্য কাজ করে:

a.reverse.drop(1).reverse

অথবা

class Array
  def clip n=1
    take size - n
  end
end
a          # => [1, 2, 3, 4]
a.clip     # => [1, 2, 3]
a = a + a  # => [1, 2, 3, 4, 1, 2, 3, 4]
a.clip 2   # => [1, 2, 3, 4, 1, 2]

চলুন বলি আমার রুবি অ্যারে আছে

a = [1, 2, 3, 4]

যদি আমি প্রথম আইটেমটি ছাড়া সব চাই, তবে আমি a.drop(1) লিখতে a.drop(1) যা দুর্দান্ত। যদি আমি সব শেষ আইটেম ছাড়া সব চাই, তবে, আমি শুধুমাত্র এই ভাবে মনে করতে পারেন

a[0..-2]   # or
a[0...-1]

কিন্তু এই drop ব্যবহার হিসাবে পরিষ্কার হিসাবে মনে হয় না। অন্য কোন অন্তর্নির্মিত উপায় আমি অনুপস্থিত?


Answer #1
a = [1,2,3,4]

a[0..(a.length - 2)]
=> [1,2,3]

Answer #2

a[0...-1] সেরা উপায় মত মনে হয়। অ্যারে slicing সিনট্যাক্স ঠিক এই উদ্দেশ্যে জন্য তৈরি করা হয়েছিল ...

বিকল্পভাবে, যদি আপনি অ্যারে সংশোধন করতে মনস্থ না করেন তবে আপনি কেবল একটি a.pop কল করতে পারেন:

>> a = [1, 2, 3, 4]
>> a.pop
>> a
=> [1, 2, 3]

Answer #3

আমি এটা পছন্দ করি:

my_array[0..-2]

Answer #4

যদি আপনি একটি অ্যারেতে একটি pop() ক্রিয়াকলাপ সঞ্চালন করতে চান (যা শেষ আইটেমটি মুছে ফেলা হয়) তবে আপনি পপড উপাদানটির পরিবর্তে অ্যারেটি পেতে আগ্রহী হন তবে আপনি tap(&:pop) ব্যবহার করতে পারেন। :

> arr = [1, 2, 3, 4, 5]
> arr.pop
=> 5
> arr
=> [1, 2, 3, 4]
> arr.tap(&:pop)
=> [1, 2, 3]

Answer #5

কৌতূহল থেকে, আপনি কেন a[0...-1] ? আপনি অ্যারে একটি স্লাইস পেতে চান, তাই স্লাইস অপারেটর idiomatic পছন্দ মত মনে হয়।

তবে যদি আপনাকে এই জায়গায় সমস্ত কল করতে হয় তবে আপনার কাছে সবসময় অ্যারে ক্লাসে আরও বন্ধুত্বপূর্ণ নামের সাথে একটি পদ্ধতি যোগ করার বিকল্প রয়েছে, যেমন DigitalRoss প্রস্তাবিত। সম্ভবত এই মত:

class Array
    def drop_last
        self[0...-1]
    end
end

Answer #6

আরেকটি শীতল কৌশল

>> *a, b = [1,2,3]
=> [1, 2, 3]
>> a
=> [1, 2]
>> b
=> 3

Answer #7

আপনি "নিতে" চেষ্টা করেছেন

a.take(3) 

Answer #8

উত্তর: a.τwτ , তবে প্রথমে Pyper ইনস্টল করতে হবে ...

পাইপার ভূমিকা: আপনি কি জানেন লিসি car এবং সিডিআর "অ্যারে" এবং "বিশ্রাম" অ্যারে? শুধু আপনার মত প্রয়োজনের জন্য, আমি এই Lispy প্রক্রিয়া একটি এক্সটেনশন তৈরি। এটি pyper বলা pyper , এবং এটি আপনাকে দ্বিতীয়, তৃতীয়, তৃতীয়, 3 ডি থেকে বিশ্রাম এবং শেষ পর্যন্ত, শেষ ইত্যাদি ছাড়া বাকি সবকিছু অ্যাক্সেস করার অনুমতি দেয়। এটি সম্পর্কে লিখতে অনেক কিছু হবে না, তবে এটি অক্ষর গঠনকেও অনুমোদন করে যেমন caar , cadr , cdadar ইত্যাদি লিসপ থেকে জানা যায়:

# First, gem install pyper
require 'pyper'
include Pyper
a = %w/lorem ipsum dolor sit amet/
# To avoid confusion with other methods, and also because it resembles a rain gutter,
# Greek letter τ is used to delimit Pyper methods:
aaτ #=> "lorem"
adτ #=> ["ipsum", "dolor", "sit", "amet"]
abτ #=> "ipsum"
aeτ #=> ["dolor", "sit", "amet"]
acτ #=> "dolor" (3rd)
azτ #=> "amet" (last)
ayτ #=> "sit" (2nd from the end)
axτ #=> "dolor" (3rd from the end)

এবং অবশেষে, আপনার প্রশ্নের উত্তর:

awτ #=> ["lorem", "ipsum", "dolor", "sit"] (all except last)

আরো আছে:

auτ #=> ["lorem", "ipsum", "dolor"] (all except last 2)
a1τ #=> ["lorem", "ipsum"] (first 2)
a8τ #=> (last 2)
a7τ #=> (last 3)

রচনা:

awydτ #=> "olor" (all except 1st letter of the last word of all-except-last array)

আরো একটি কমান্ড অক্ষর আছে যা শুধুমাত্র a..f , u..z এবং 0..9 , উল্লেখযোগ্যভাবে m , মানে মানচিত্র:

awmbτ #=> ["o", "p", "o", "i"] (second letters of all-except-last array)

কিন্তু অন্যান্য কমান্ড অক্ষর খুব গরম এবং মুহূর্তে ব্যবহার করা খুব সহজ নয়।


Answer #9

এটাই উপাই:

[1,2,3,4,5][0..-1-1]

কিন্তু আসুন কিভাবে এই কাজ করে ব্যাখ্যা করুন:

a = [1,2,3,4,5]

পরবর্তী উদাহরণ 0 অবস্থান থেকে শেষ পর্যন্ত সব রেকর্ড ফিরে আসবে

a[0..-1]
=> [1, 2, 3, 4, 5]

পরবর্তী উদাহরণ 1 অবস্থান থেকে শেষ পর্যন্ত রেকর্ড ফিরে আসবে

a[1..-1]
=> [2, 3, 4, 5]

এবং এখানে আপনি আপনার প্রয়োজন কি আছে। পরবর্তী উদাহরণ 0 অবস্থান থেকে শেষ -1 পর্যন্ত রেকর্ডগুলি ফেরত পাঠাবে

a[0..-1-1]
=> [1, 2, 3, 4]

Answer #10

অবশিষ্ট ফিরতি সঙ্গে এক লাইন শেষ উপাদান পরিত্রাণ পেতে

[1, 2, 4, 5, 6].reverse.drop(1).reverse

গুরুতরভাবে যদিও,

[1,2,3,4][0..-2]
#=> [1,2,3]

Answer #11

কিভাবে ড্রপ পদ্ধতি নিজেই বৃদ্ধি, যেমন উদাহরণস্বরূপ?

class Array
  def drop(n)
    n < 0 ? self[0...n] : super
  end
end

তারপরে আপনি শেষ থেকে উপাদানগুলি সরাতে নেতিবাচক আকার ব্যবহার করতে পারেন, যেমন:

[1, 2, 3, 4].drop(-1) #=> [1, 2, 3]
[1, 2, 3, 4].drop(-2) #=> [1, 2]






ruby