Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

`&:` शॉर्टकट में महारत हासिल करें: Ruby में `items.map(&:name)` को सरल बनाएं

जब सरणियों पर पुनरावृत्ति करते हैं, तो एक शॉर्टहैंड है जिसका मैं बार-बार उपयोग करता हूँ। यह `&:` ट्रिक है, जिसे "एम्परसैंड कोलन" या "प्रेट्ज़ेल कोलन" भी कहा जाता है। यदि आप इससे परिचित नहीं हैं, तो यहाँ बताया गया है कि यह कैसे काम करता है:

words = ["would", "you", "like", "to", "play", "a", "game?"] # यह... words.map &:length # ..इसके बराबर है: words.map { |w| w.length } 

हाल तक, मैंने माना था कि `&:` सिंटैक्स एक ऑपरेटर था। लेकिन यह नहीं है। यह एक चतुर हैक है जो ActiveSupport में शुरू हुआ और Ruby 1.8.7 में एक आधिकारिक सुविधा बन गया।

`&` ऑपरेटर

AND लॉजिक ऑपरेशन के लिए उपयोग किए जाने के अलावा, Ruby में "&" वर्ण का एक और उपयोग है। जब इसे मेथड आर्गुमेंट की शुरुआत में जोड़ा जाता है, तो यह अपने ऑपरेंड पर `to_proc` कॉल करता है और इसे एक ब्लॉक के रूप में पास करता है। यह एक मुंह भरने जैसा है। उदाहरण देखना बहुत सरल है:

def my_method(&block) block.call end class Greeter def self.to_proc Proc.new { "hello" } end end my_method(&Greeter) # "hello" लौटाता है 

Symbol#to_proc

आप किसी भी ऑब्जेक्ट में `to_proc` मेथड जोड़ सकते हैं, जिसमें Symbol भी शामिल है। `&:` शॉर्टकट की अनुमति देने के लिए Ruby ठीक यही करता है। यह कुछ इस तरह दिखता है:

class Symbol def to_proc Proc.new do |item| item.send self end end end 

स्पष्ट है? महत्वपूर्ण हिस्सा `item.send(self)` है। इस मामले में Self सिंबल को संदर्भित करता है।

सब कुछ एक साथ रखना

`each` और `map` जैसे Enumerable मेथड एक ब्लॉक स्वीकार करते हैं। प्रत्येक आइटम के लिए वे ब्लॉक को कॉल करते हैं और उसे आइटम का संदर्भ पास करते हैं। इस मामले में ब्लॉक सिंबल पर `to_proc` कॉल करके उत्पन्न होता है।

# &:name एक Proc में मूल्यांकन होता है, जो item.send(:name) करता है items.map(&:name) 

दिलचस्प बात यह है कि `map` को पता नहीं है कि यह सब हो रहा है! थोक काम `:name` सिंबल द्वारा किया जा रहा है। यह निश्चित रूप से चतुर है... लगभग मेरे स्वाद के लिए बहुत चतुर। लेकिन यह वर्षों से Ruby के मानक पुस्तकालय का हिस्सा रहा है, और यह इतना आसान है कि मुझे संदेह है कि मैं अभी इसका उपयोग करना बंद कर दूंगा। :)


  1. Tails: वह लिनक्स डिस्ट्रीब्यूशन जो आपको ऑनलाइन पूरी तरह गुमनाम बनाता है Tails: वह लिनक्स डिस्ट्रीब्यूशन जो आपको ऑनलाइन पूरी तरह गुमनाम बनाता है

    यह कोई रहस्य नहीं है कि कई उपयोगकर्ता अंततः Windows से लिनक्स पर स्विच करते हैं क्योंकि वे अपने स्वयं के विकल्प बनाना चाहते हैं और अपने कंप्यूटर और गोपनीयता पर नियंत्रण रखना चाहते हैं। यद्यपि कई लिनक्स डिस्ट्रोज हैं, प्रत्येक अगले से अलग, सुरक्षा और गोपनीयता उन सभी के माध्यम से चलने वाले सामान्य धाग

  1. Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड

    Map एक Ruby मेथड है जिसका उपयोग आप Arrays, Hashes और Ranges के साथ कर सकते हैं। map का मुख्य उपयोग डेटा को ट्रांसफॉर्म करना है। उदाहरण के लिए: स्ट्रिंग्स की एक सरणी दिए जाने पर, आप हर स्ट्रिंग पर जा सकते हैं और हर कैरेक्टर को UPPERCASE बना सकते हैं। या यदि आपके पास User ऑब्जेक्ट्स की एक सूची है... आ

  1. अब तक के सबसे उन्नत स्मार्ट-होम हैक के अंदर अब तक के सबसे उन्नत स्मार्ट-होम हैक के अंदर

    तकनीक हमारे घर को स्मार्ट बनाती है - वे कहते हैं, लेकिन यह एक संभावित प्रवेश द्वार भी उत्पन्न करती है जिसके माध्यम से कुटिल हैकर्स आसानी से हमारे घरों में घुस सकते हैं। हाँ, आपने सही सुना! लैपटॉप भूल जाइए, लॉकर भूल जाइए। साइबर अपराध का युग यहां है और फल-फूल रहा है। अब आपका स्मार्ट रेफ्रिजरेटर भी नही