2015-02-05 7 views
12

मैं रूबी के लिए नया हूं, और रेल दोनों। मुझे लगता है कि रेल सबसे अच्छा एपीआई में से एक है, और गहरे लाल रंग का काफी अद्वितीय है, ऐसा लगता है कि गहरे लाल रंग का चतुराई से "अनुमान" क्या कर सकते हैं डेवलपर मदद करने के लिए। लेकिन मुझे पूरा करने के लिए भी यकीन नहीं है कि क्या बढ़ रहा है।

मेरे प्रश्न चर में कोलन के बारे में है।
जो मैंने अभी तक समझा है वह है कि : ruby ​​में परिवर्तनीय है, यह कहना है कि यह चर बदलने में सक्षम नहीं होगा, जो कि अन्य भाषा में निरंतर समान है। क्या मैं सही हूँ??रेल पर रूबी, चर या पीछे चर के सामने कोलन

तब मेरे भ्रम की स्थिति है, कभी कभी मैं चर के पेट के सामने देख रहा है, इस तरह

Rails.application.config.session_store :cookie_store, 
     key: '_blog_session' 
    <%= link_to "Delete", article, confirm: "Are you sure?", 
     method: :delete %> 

दोनों कुंजी: और विधि: front.What में पेट है कि इस का प्रतिनिधित्व करते हैं? और इसके अलावा

Blog::Application.routes.draw.do 
    root :to => "articles#index" 
end 

वहाँ डबल कोलन inbetween चर रहे हैं? अब मैं अनुमान लगा रहा हूं कि ब्लॉग: एक चर है, और: अनुप्रयोग स्थिर है। जो मुझे संदेह है, क्योंकि यह समझ में नहीं आता है। कृपया मुझे ज्ञान दो?

धन्यवाद

+0

यह न तो एक चर, न ही स्थिर है। यह रूबी [प्रतीक] (http://www.ruby-doc.org/core-2.2.0/Symbol.html) के लिए शाब्दिक वाक्यविन्यास है। 'ब्लॉग :: एप्लिकेशन 'सिंटैक्स प्रतीकों से संबंधित नहीं है, यह [नेमस्पेस] को हल करने के बारे में है (http://ruby-doc.com/docs/ProgrammingRuby/html/tut_modules.html)। –

+0

बस स्पष्ट होने के लिए, क्या आपका मतलब ब्लॉग एक नामस्थान है? या एप्लिकेशन एक नामस्थान है? कॉलन के बारे में क्या, विधि की तरह: या कुंजी: – vdj4y

+0

ब्लॉग नामस्थान है। मेरे द्वारा प्रदान किए गए लिंक को देखें। '{Method: 'delete'}' आदि जैसे सिंटेक्स एक हैश सिंटैक्स है, जो '{: method => 'delete'} के बराबर है। –

उत्तर

31

जो मैंने अभी तक समझ लिया है वह है कि :variable रूबी में, यह कहना है कि यह चर बदलने में सक्षम नहीं होगा, जो कि अन्य भाषा में निरंतर समान है।

मुझे यकीन नहीं है कि मैं उस कथन को समझता हूं।रूबी में, स्थिरांक एक अपरकेस अक्षर से शुरू:

Foo = 1 

रीअसाइनमेंट एक चेतावनी उत्पन्न करता है:

Foo = 1 
Foo = 2 #=> warning: already initialized constant Foo 

चर एक छोटा अक्षर और पुनर्निर्धारण एक चेतावनी का कारण नहीं है के साथ शुरू (वे कर रहे हैं बदलना चाहिए):

foo = 1 
foo = 2 # no warning 

प्रतीक

:a_symbol 
:Uppercase_symbol 
:"i'm a symbol, too" 

वे अक्सर स्थिर मूल्यों का प्रतिनिधित्व करता है, उदा: एक कॉलन के साथ शुरू:get और :post। प्रतीक स्मृति कुशल हैं, क्योंकि वे केवल एक बार बनाए जाते हैं - एक ही प्रतीक शाब्दिक हमेशा एक ही वस्तु देता है। यह जांचना कि क्या दो प्रतीक समान हैं, एक सस्ता ऑपरेशन है।

key: और method: (...) यह क्या दर्शाता है?

यह हैश के लिए एक वैकल्पिक वाक्यविन्यास है।

{ foo: 1, bar: 2 } 
#=> {:foo=>1, :bar=>2} 

वहाँ डबल कोलन inbetween चर हैं: आप परिणाम देखने के लिए आईआरबी में टाइप कर सकते हैं? अब मुझे लगता है कि Blog: एक चर है, और :Application स्थिर है।

नहीं है, Blog और Application दोनों स्थिरांक हैं और :: गुंजाइश संकल्प ऑपरेटर है। इसका उपयोग नेस्टेड स्थिरांक तक पहुंचने के लिए किया जा सकता है, उदाहरण:

module Foo 
    class Bar 
    BAZ = 123 
    end 
end 

Foo::Bar::BAZ #=> 123 
+0

ग्रेट, लघु और स्पष्ट। धन्यवाद – vdj4y

+0

@Stefan एक और भ्रम 'पैराम्स = {}' पैराम्स [mehtods:] =: वाक्यविन्यास त्रुटि हटाएं, अप्रत्याशित ']' लेकिन अगर पैराम्स [: mehtods] =: हटाएं तो यह ठीक है क्यों? – VKatz

+0

@ विनयगुप्त वैकल्पिक वाक्यविन्यास केवल कुंजी-मूल्य * जोड़े * के लिए काम करता है, उदा। '{विधि:: हटाएं}'। अन्यथा, कोलन हमेशा पहले आता है। – Stefan

3
Rails.application.config.session_store :cookie_store, key: '_blog_session' 

session_store एक विधि है कि दो "तर्क" लेता है:

  • :cookie_store एक Symbol
  • key: '_blog_session' वास्तव में एक Hash लेखन की एक छोटी तरीका है।

के लिए link_to "Delete", article, confirm: "Are you sure?", method: :delete

  • "Delete" (भी हो सकता है session_store :cookie_store, { key: '_blog_session' })

    इसी तरह एक स्ट्रिंग

  • article एक चर
  • { confirm: '...', method: :delete } हैश जहां confirm:, method: और :delete प्रतीकों फिर से हो रहा है।

जबकि Blog::Application:: is basically a namespace resolution operator. आप Blog मॉड्यूल में आवेदन वर्ग को संबोधित करने के लिए एक तरीका है।

उम्मीद है कि इससे मदद मिलती है। मैंने संदर्भित दस्तावेज़ीकरण पर एक नज़र डालें, इसे अच्छी तरह से समझाया गया है।

+0

'पुष्टि करें: "क्या आप निश्चित हैं?", विधि:: हटाएं * है * एक * हैश, दो – Stefan

+0

@Stefan आप निश्चित रूप से सही नहीं हैं। – wpp

संबंधित मुद्दे