20

रूबी में, एक मानक सम्मेलन एक विधि नाम के अंत में एक प्रश्न चिह्न का उपयोग करने से संकेत मिलता है विधि एक बूलियन परिणाम देता है विस्मयादिबोधक बिंदु के साथ एक विधि नाम खत्म करता है, तो विधि विनाशकारी है (जो है, यह मूल डेटा को संशोधित करता है):उपयोग

mylist.sort! # sort mylist in-place 

हाल ही में मैं ये वही योजना में इस्तेमाल किया सम्मेलनों देखा है। जो मुझे आश्चर्यचकित करता है, इस सम्मेलन का उपयोग/समर्थन करने वाली अन्य भाषाएं क्या हैं? क्या कोई अन्य विशेष पात्र हैं जिनका उपयोग आमतौर पर इन या अन्य भाषाओं द्वारा नामकरण के लिए किया जाता है?

उत्तर

15

उत्तर, ज़ाहिर है, भाषा (और भाषा संस्कृति) विशिष्ट है।

उदाहरण के लिए, भाषा के आधार पर, निम्नलिखित सभी उपयुक्त हैं: खाली-पी, खाली ?, खाली, is_empty या isEmpty है। (ये उदाहरण, ज़ाहिर है, समावेशी नहीं हैं)।

मूल प्रश्न में उदाहरण रुबी से आते हैं जहां इस तरह के उपयोग? तथा ! विधि नाम समाप्त करने के लिए, जहां उचित, स्वीकार किया जाता है। यह स्वीकृति 1 से आता है) व्याकरण में प्रतीक टर्मिनेटर के रूप में आसानी से सुलभ 2) का उपयोग? तथा ! मानक पुस्तकालय में। हालांकि, यह ध्यान रखना चाहिए कि! "साइड इफेक्ट" को इंगित करने के लिए सार्वभौमिक रूप से उपयोग नहीं किया जाता है और आमतौर पर केवल वैकल्पिक रूपों पर मौजूद होता है: सहेजें/सहेजें !, सॉर्ट/सॉर्ट !, आदि। ऐसी कई विधियां हैं जो साइड इफेक्ट्स नहीं करती हैं जिनके पास नहीं है द! उपसर्ग।

व्यक्तिगत रूप से, अगर मैं एक भाषा डिजाइन कर रहा था, तो मैं अनुमति दूंगा?और 'प्रतीक नामों में मान्य अनगिनत पीछे वाले पात्र होने के लिए। भले ही कुछ भाषाएं स्केल जैसे पूर्ण प्रतीकों से बचने की अनुमति दें, ऐसे प्रतीकों को आमतौर पर टाला जाता है क्योंकि उन्हें दर्द के लिए उन्हें उद्धृत करना पड़ता है।

 
// in Scala, esp. with Java-compat, the last form is generally used although 
// the first two are perfectly valid -- do what makes sense in the language 
foo.`empty?` 
foo.empty_? 
foo.isEmpty 

जब रोम में ...

  • स्काला - `` खाली या empty_? (आम नहीं)
  • सी/सी ++/जेएस/जावा/पायथन/पर्ल - नहीं? या! पहचानकर्ताओं में; जेएस/जावा $ की अनुमति है; $ पर्ल
  • सी/सी ++/पर्ल/जेएस - हवा में हाथों में एक सिगिल है?
  • सी # - IsEmpty (विधि या संपत्ति) या खाली (संपत्ति)
  • अजगर - is_empty या isEmpty प्रति गुइडो-गाइड (हालांकि आमतौर पर __len__ प्रोटोकॉल: if not len(foo): "empty!")
  • जावा - भाषा गाइड
  • रूबी प्रति isEmpty - विशेष पीछे? तथा ! (हवाले से?)
  • जे एस - अप्रत्यक्ष पहचानकर्ता का उपयोग: obj [ "खाली?"] (इस के लिए आम नहीं)
  • "लिस्प" (पारंपरिक): विधेय के लिए खाली-p; पाठक/उद्धरण

सुधार और/या जोड़ों को देखने में खुशी - बाल्टी में केवल एक बूंद है।

+0

सहायता सहायता! मैं इस पोस्ट के निचले हिस्से को "समुदाय विकी" में कैसे बदल सकता हूं? –

+0

कोई भी आपकी पोस्ट संपादित कर सकता है, इसलिए यह एक समुदाय विकी है। तुम क्या करने की कोशिश कर रहे हो? मैं इन और सभी की टिप्पणियों को मूल शीर्ष-स्तर के प्रश्न में शामिल कर सकता हूं ताकि सभी के लिए एक सूची हो। –

+0

अधिमानतः बस नीचे संपादित सूची में सूची है। मुझे यकीन नहीं था कि इसे दूसरों द्वारा संपादित किया जा सकता है। यह stackoverflow बात अभी भी मेरे लिए थोड़ा नया है। –

-1

यदि आप जावास्क्रिप्ट को एक भाषा के रूप में गिनते हैं, तो कई ढांचे 'चयनकर्ता' का अर्थ '$' वर्ण का उपयोग करने लगते हैं; उदाहरण के लिए, <div id="id-of-some-item"> लिखा गया टैग चुनने के लिए jQuery में प्रोटोटाइप.जेएस या $("#id-of-some-item") में $("id-of-some-item") का उपयोग कर सकते हैं। इन चयन कार्यों का उपयोग वास्तव में काफी जटिल और शक्तिशाली है (यदि आप रुचि रखते हैं, तो prototypejs.org और jquery.com पर उनके सहायक दस्तावेज़ देखें), लेकिन वे कुछ करने के लिए उबालते हैं जो मैं आपके द्वारा जो कुछ भी मिला है उसके समान ही संकेत दिया।

फिर, यह माना जाता है कि आप जावास्क्रिप्ट को एक भाषा के रूप में गिनते हैं।

+12

* यदि *? यह थोड़ा कठोर है, है ना? – paxdiablo

+1

ओह, मुझे टेप खींचने दो ... यह भी ट्यूरिंग पूर्ण है। (गीक ​​टेस्ट।) हां, यह एक कंप्यूटर प्रोग्रामिंग भाषा है, शायद कुछ लोगों द्वारा पसंद नहीं है, लेकिन नींबू Meringue पाई अचानक पाई बनना बंद नहीं करता है क्योंकि मैं इस बात से घृणा करता हूं कि यह कैसे स्वाद करता है। –

+0

मैं इस पर ($ == चयनकर्ता) पर भरोसा नहीं करता: http://stackoverflow.com/questions/205853/why-would-a-javascript-variable-start-with-a-dollar-sign –

1

सी # में एक विधि नाम (या कोई पहचानकर्ता) को "@" तैयार करना आपको सामान्य रूप से आरक्षित कीवर्ड के साथ उस विधि का नाम देने की अनुमति देता है।

void null() {} 
// Invalid token 'null' in class, struct, or interface member declaration 

void @null() 
// compiles 

ऐसा मत करें; यह मुख्य रूप से मशीन से उत्पन्न कोड के लिए है, जैसे डेटासेट। MSDN page on the topic.

+0

क्या सी # में मनमाने ढंग से पहचानकर्ता उद्धृत करने का कोई तरीका है? –

3

मैं फ़ंक्शन नामों में विशेष पात्रों का बड़ा प्रशंसक नहीं हूं, लेकिन फिर भी दर्द को दूर करने के लिए गीले अजवाइन की एक छड़ी के साथ मैं मौत को भी मार दूंगा, कोई भी मुझे फ़ाइल नामों में रिक्त स्थान ढूंढने वाला लगता है: -)

? संस्करण बस के रूप में आसानी से isEmpty() की तरह कुछ और sortInPlace() साथ ! संस्करण के साथ किया जा सकता है।

अंग्रेजी विराम चिह्न के बिना भी एक बहुत ही अनुकूली भाषा है।

किसी भी मामले में, मेरी पसंद की भाषा (सी और जावा) अन्य चीजों के सभी प्रकार के लिए विराम चिह्न का उपयोग करती है। उन्हें पहचानकर्ताओं के साथ-साथ लेक्सिकल विश्लेषण को एक दुःस्वप्न बनाना होगा।

+3

"उन्हें पहचानकर्ताओं के साथ-साथ लेक्सिकल विश्लेषण को एक दुःस्वप्न बनाना होगा।" यह कथन बस सच नहीं है। जबकि मैं रूबी के सिंटैक्स की रक्षा नहीं करूंगा (जो संदर्भ मुक्त नहीं है और इसमें कई विषम क्विर्क हैं: उदा। a??b:c), गैर [ए-जेड _] [ए-जेड -9_] का उपयोग लेक्सर के माध्यम से चलाने के लिए आवश्यक नहीं है। योजना को एक बहुत ही सरल "काउंटर-उदाहरण" के रूप में देखें (और पर्ल, शायद एक प्रमुख उदाहरण है, हालांकि यह पहचानकर्ताओं में "विशेष" वर्णों की अनुमति नहीं देता है)। हालांकि, ऐसे प्रतीकों का उपयोग राय के लिए व्यापक रूप से खुला है। –

+0

@ user166390 रूबी का एक और वर्दी व्याकरण है। मुझे लगता है कि यह संदर्भ संवेदनशील नहीं है और बीएनएफ में वर्णित किया जा सकता है। सी ++ को विश्लेषण के लिए संदर्भ की आवश्यकता है और बीएनएफ में वर्णित नहीं किया जा सकता है। पहचानकर्ताओं को विशेष वर्ण जोड़ना पार्सिंग को जटिल करेगा, लेकिन मैं मानता हूं कि सैद्धांतिक रूप से पार्सिंग अभी भी संभवतः संभवतः संभव है, लेकिन मुझे लगता है कि ऐसा करने के लिए कोड अभ्यास में मुश्किल होगा। – Sqeaky