आपकी राय में, आपके द्वारा सामना की गई सबसे आश्चर्यजनक, अजीब, अजीब या वास्तव में "डब्ल्यूटीएफ" भाषा की विशेषता क्या है?
कृपया प्रति उत्तर केवल एक सुविधा।
आपकी राय में, आपके द्वारा सामना की गई सबसे आश्चर्यजनक, अजीब, अजीब या वास्तव में "डब्ल्यूटीएफ" भाषा की विशेषता क्या है?
कृपया प्रति उत्तर केवल एक सुविधा।
जवाबों:
सी में, सरणियों को इस तरह अनुक्रमित किया जा सकता है:
a[10]
जो बहुत आम है।
हालांकि, कम ज्ञात रूप (जो वास्तव में काम करता है!) है:
10[a]
जिसका अर्थ उपरोक्त के समान है।
जावास्क्रिप्ट में:
'5' + 3 gives '53'
जहाँ तक
'5' - 3 gives 2
+
स्ट्रिंग संकेतन के लिए भयानक है
जावास्क्रिप्ट में, निम्नलिखित निर्माण
return
{
id : 1234,
title : 'Tony the Pony'
};
रिटर्न के बाद नई सीमा पर डरपोक निहित अर्धविराम सम्मिलन के कारण एक वाक्यविन्यास त्रुटि है undefined
return
। निम्नलिखित काम करता है क्योंकि आप उम्मीद करेंगे:
return {
id : 1234,
title : 'Tony the Pony'
};
इससे भी बदतर, यह एक काम करता है (क्रोम में, कम से कम):
return /*
*/{
id : 1234,
title : 'Tony the Pony'
};
यहाँ एक ही समस्या का एक संस्करण है जो एक सिंटैक्स त्रुटि उत्पन्न नहीं करता है, बस चुपचाप विफल रहता है:
return
2 + 2;
जावास्क्रिप्ट सत्य तालिका:
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
" \t\r\n" == 0 // true
स्रोत: डौग क्रॉकफोर्ड
==
भाषा डिजाइनर की नजर में क्या उद्देश्य है ?
==
इसका अर्थ होता है ===
, और फिर एक और ऑपरेटर था, जो कुछ इस तरह ~=
की अनुमति देता है।
C और C ++ में ट्रिग्राफ।
int main() {
printf("LOL??!");
}
यह प्रिंट करेगा LOL|
, क्योंकि ट्रिग्राफ ??!
को रूपांतरित किया गया है |
।
ऑटो बॉक्सिंग के साथ मज़ा और जावा में पूर्णांक कैश:
Integer foo = 1000;
Integer bar = 1000;
foo <= bar; // true
foo >= bar; // true
foo == bar; // false
//However, if the values of foo and bar are between 127 and -128 (inclusive)
//the behaviour changes:
Integer foo = 42;
Integer bar = 42;
foo <= bar; // true
foo >= bar; // true
foo == bar; // true
जावा स्रोत कोड पर एक त्वरित झांकना निम्नलिखित होगा:
/**
* Returns a <tt>Integer</tt> instance representing the specified
* <tt>int</tt> value.
* If a new <tt>Integer</tt> instance is not required, this method
* should generally be used in preference to the constructor
* {@link #Integer(int)}, as this method is likely to yield
* significantly better space and time performance by caching
* frequently requested values.
*
* @param i an <code>int</code> value.
* @return a <tt>Integer</tt> instance representing <tt>i</tt>.
* @since 1.5
*/
public static Integer valueOf(int i) {
if (i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
नोट: किसी संपत्ति द्वारा निर्धारित किए IntegerCache.high
जाने 127
तक चूक ।
ऑटो बॉक्सिंग के साथ क्या होता है कि दोनों फू और बार एक ही पूर्णांक वस्तु को कैश से पुनर्प्राप्त किए जाते हैं जब तक कि स्पष्ट रूप से निर्मित नहीं किया जाता है: जैसे foo = new Integer(42)
, संदर्भ समानता की तुलना करते समय, वे झूठे के बजाय सही होंगे। इंटेगर मूल्य की तुलना करने का उचित तरीका उपयोग कर रहा है.equals;
नील फ्रेजर का उद्धरण (उस पृष्ठ के अंत में देखें),
try {
return true;
} finally {
return false;
}
(जावा में, लेकिन व्यवहार स्पष्ट रूप से जावास्क्रिप्ट और पायथन में समान है)। परिणाम पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है।
संपादित करें: जब तक हम इस विषय पर हैं, इस पर भी विचार करें:
try {
throw new AssertionError();
} finally {
return false;
}
Control cannot leave the body of a finally clause
return
में नहीं डालना चाहिए finally
।
APL (इसके अलावा सभी), किसी भी प्रोग्राम को सिर्फ एक लाइन में लिखने की क्षमता।
जैसे । एपीएल में एक लाइन में कॉनवे का जीवन का खेल :
alt text http://catpad.net/michael/APLLife.gif
अगर वह रेखा डब्ल्यूटीएफ नहीं है, तो कुछ भी नहीं है!
और यहाँ एक वीडियो है
C ++ टेम्प्लेट के लिए अजीब चीजों का उपयोग किया जा सकता है, "मल्टी-डायमेंशनल एनालॉग लिटरल" द्वारा सबसे अच्छा प्रदर्शन किया गया है जो "तैयार" आकृतियों के क्षेत्र की गणना करने के लिए टेम्प्लेट का उपयोग करता है। निम्नलिखित कोड एक 3x3 आयत के लिए मान्य C ++ है
#include"analogliterals.hpp"
using namespace analog_literals::symbols;
unsigned int c = ( o-----o
| !
! !
! !
o-----o ).area;
या, एक 3 डी घन के साथ एक और उदाहरण:
assert( ( o-------------o
|L \
| L \
| L \
| o-------------o
| ! !
! ! !
o | !
L | !
L | !
L| !
o-------------o ).volume == ( o-------------o
| !
! !
! !
o-------------o ).area * int(I-------------I) );
पर्ल के कई अंतर्निहित चर:
$#
- नहीं टिप्पणी !$0
, $$
और$?
- उसी नाम से शेल वेरिएबल की तरह$ˋ
, $&
और$'
- अजीब मिलान चर$"
तथा $,
- सूची और आउटपुट-क्षेत्र-विभाजकों के लिए अजीब चर$!
- errno
एक संख्या के रूप में लेकिनstrerror(errno)
रूप में एक स्ट्रिंग के रूप में$_
- चुपके चर, हमेशा इस्तेमाल किया है और कभी नहीं देखा$#_
- पिछले सबरूटीन तर्क की सूचकांक संख्या ... हो सकता है@_
- (गैर) वर्तमान फ़ंक्शन के नाम ... शायद$@
- अंतिम उठाया अपवाद%::
- प्रतीक तालिका$:
, $^
, $~
, $-
, और $=
- उत्पादन प्रारूपों के साथ कुछ करने के लिए$.
और $%
- इनपुट लाइन नंबर, आउटपुट पेज नंबर$/
और $\
- इनपुट और आउटपुट रिकॉर्ड विभाजक$|
- आउटपुट बफरिंग कंट्रोलर$[
- 0 से आधारित 1-आधारित को 42-आधारित करने के लिए अपने सरणी आधार को बदलें: WHEEE!$}
- कुछ भी नहीं, अजीब तरह से पर्याप्त!$<
, $>
, $(
, $)
- वास्तविक और प्रभावी UIDs और GIDs@ISA
- वर्तमान पैकेज के प्रत्यक्ष सुपरक्लेसेस के नाम$^T
- एपोकैप सेकंड में स्क्रिप्ट स्टार्ट-अप समय$^O
- वर्तमान ऑपरेटिंग सिस्टम नाम$^V
- पर्ल का यह कौन सा संस्करण हैऔर भी बहुत कुछ है जहाँ से आए हैं। पूरी सूची यहां पढ़ें ।
$[
चर इन सबमें सबसे अधिक दुष्ट है।
perldoc perlvar
हर पांच सेकंड की जांच के बिना कोड कर सकता था । (हालांकि मैं स्वीकार करता हूं कि आधा समय मैं यह सोचकर जांच करता हूं "मुझे पता है कि एक विशेष चर है जो मेरे लिए ऐसा कर सकता है, मुझे अभी याद नहीं है कि कौन सा ..." = पी)
use English;
यह है कि यह RegExp प्रदर्शन को प्रभावित करता है। मैं झूठ नहीं बोल रहा। perldoc.perl.org/English.html#PERFORMANCE
/$foo[bar]/
, क्या [bar]
एक चरित्र वर्ग या सरणी के लिए एक सबस्क्रिप्ट है @foo
? भयानक जवाब के लिए Grep perldata।
स्ट्रिंग्स में PHP के संख्यात्मक मानों को संभालना । देखें एक अलग प्रश्न को यह पिछले जवाब में पूरी जानकारी है, लेकिन संक्षेप में, के लिए:
"01a4" != "001a4"
यदि आपके पास दो तार हैं जिनमें विभिन्न प्रकार के वर्ण हैं, तो उन्हें समान नहीं माना जा सकता है। अग्रणी शून्य महत्वपूर्ण हैं क्योंकि ये तार संख्या नहीं हैं।
"01e4" == "001e4"
PHP स्ट्रिंग्स को पसंद नहीं करती है। यह किसी भी बहाने की तलाश में है जो आपके मूल्यों को संख्याओं के रूप में मान सकता है। थोड़ा और अचानक उन स्ट्रिंग्स में हेक्साडेसिमल वर्णों को बदलें, PHP तय करता है कि ये किसी भी अधिक तार नहीं हैं, वे वैज्ञानिक संकेतन में संख्याएं हैं (PHP परवाह नहीं करता है कि आपने उद्धरणों का उपयोग किया है) और वे बराबर हैं क्योंकि अग्रणी शून्य संख्याओं के लिए अनदेखा किए जाते हैं। इस बिंदु को सुदृढ़ करने के लिए आप पाएंगे कि PHP भी "01e4" == "10000"
सही के रूप में मूल्यांकन करता है क्योंकि ये समतुल्य मान वाले अंक हैं। यह प्रलेखित व्यवहार है, यह बहुत समझदार नहीं है।
आइए सभी भाषाओं (जैसे PL / I) के लिए एक वोट दें, जो आरक्षित शब्दों के साथ दूर करने की कोशिश करें।
और कहाँ आप कानूनी रूप से इस तरह के मनोरंजक अभिव्यक्ति लिख सकते हैं:
IF IF THEN THEN = ELSE ELSE ELSE = THEN
( IF
, THEN
, ELSE
चर नाम कर रहे हैं)
या
IF IF THEN THEN ELSE ELSE
( IF
एक चर है, THEN
और ELSE
सबरूटीन्स हैं)
जावास्क्रिप्ट ऑक्टल रूपांतरण 'सुविधा' के बारे में जानने के लिए एक अच्छा एक है:
parseInt('06') // 6
parseInt('07') // 7
parseInt('08') // 0
parseInt('09') // 0
parseInt('10') // 10
अधिक जानकारी यहाँ ।
C में एक स्विच स्टेटमेंट के साथ / do को इंटरलेस कर सकता है। इस विधि का उपयोग करते हुए एक मेमेकपी का उदाहरण:
void duff_memcpy( char* to, char* from, size_t count ) {
size_t n = (count+7)/8;
switch( count%8 ) {
case 0: do{ *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}while(--n>0);
}
}
while
अंत में (सशर्त) JMP
वापस आ जाता है do
, जो बताता है कि आप इसे क्यों छोड़ सकते हैं do
और अभी भी लूप में समाप्त हो सकते हैं ।
अल्गोल नाम से पास (सी सिंटैक्स का उपयोग करके सचित्र):
int a[3] = { 1, 2, 3 };
int i = 1;
void f(int j)
{
int k;
k = j; // k = 2
i = 0;
k = j; // k = 1 (!?!)
}
int main()
{
f(a[i]);
}
def f(j : => int)
)
... template<typename T> struct by_name { virtual operator T&() = 0; }; void f(by_name<int> j) { ... } int main() { f(struct : by_name<int> { operator int&() { return a[i]; } }); }
?
पायथन में:
>>> x=5
>>> 1<x<10
True
>>> 1<x<3
False
डब्ल्यूटीएफ नहीं, बल्कि एक उपयोगी सुविधा है।
(10 > 5 > 1) != ((10 > 5) > 1)
पायथन में।
(funct_a(5)+5 > b > funct_a(5))
केवल funct_a(5)
एक बार कॉल करता है । यह एक महान सुविधा है!
funct_a
उस उदाहरण में दो बार बुलाया जाएगा। इसमें b > funct_a(5) > c
केवल एक बार ही बुलाया जाएगा, जैसा कि विरोध किया गया है b > funct_a(5) and funct_a(5) > c
।
जावा में:
int[] numbers() {
return null;
}
के रूप में लिखा जा सकता है:
int numbers() [] {
return null;
}
const T*
और T const*
समतुल्य है, यह T* const
सूचक को संकुचित करता है। इसके अलावा, मुझे फैंस से नफरत है।
numbers()[2]
एक कानूनी बयान है।
INTERCAL शायद सबसे अजीब भाषा सुविधाओं का सबसे अच्छा संग्रह है। मेरा व्यक्तिगत पसंदीदा COMEFROM बयान है जो (लगभग) गोटो के विपरीत है।
COMEFROM लगभग GOTO के विपरीत है कि यह कोड में किसी भी मनमाने बिंदु से COMEF कथन के लिए निष्पादन स्थिति ले सकता है। कोड में वह बिंदु जहां राज्य स्थानांतरण होता है, आमतौर पर COMEFROM के पैरामीटर के रूप में दिया जाता है। क्या निर्दिष्ट हस्तांतरण बिंदु पर निर्देश से पहले या बाद में स्थानांतरण होता है या नहीं, यह प्रयुक्त भाषा पर निर्भर करता है। उपयोग की गई भाषा के आधार पर, एक ही प्रस्थान बिंदु को संदर्भित करने वाले कई COMEFROMs अमान्य हो सकते हैं, गैर-नियतात्मक हो सकते हैं, किसी प्रकार की परिभाषित प्राथमिकता में निष्पादित किए जा सकते हैं, या यहां तक कि समानांतर या अन्यथा समकालिक रूप से थ्रेडेड इंटरलोक में देखे जाने के लिए प्रेरित करते हैं। "COMEFROM x" स्टेटमेंट का एक सरल उदाहरण एक लेबल x है (जो कि इसके संबंधित COMEFROM के पास कहीं भी भौतिक रूप से स्थित होने की आवश्यकता नहीं है) जो "ट्रैप डोर" के रूप में कार्य करता है। जब कोड निष्पादन लेबल तक पहुंचता है, तो COMEFROM के बाद नियंत्रण को नियंत्रण में दिया जाता है। इसका प्रभाव मुख्य रूप से डिबगिंग (और प्रोग्राम के नियंत्रण प्रवाह को समझना) को अत्यंत कठिन बनाना है, क्योंकि लेबल के पास कोई संकेत नहीं है कि नियंत्रण रहस्यमय तरीके से कार्यक्रम के किसी अन्य बिंदु पर कूद जाएगा।
PLEASE
पर्याप्त रूप से संशोधक का उपयोग नहीं करते हैं !
वास्तव में एक भाषा सुविधा नहीं है, लेकिन एक कार्यान्वयन दोष है: कुछ शुरुआती फोरट्रान कंपाइलरों ने निरंतर पूल का उपयोग करके स्थिरांक को लागू किया। सभी मापदंडों को संदर्भ द्वारा पारित किया गया था। यदि आप एक फ़ंक्शन कहते हैं, जैसे
f(1)
कंपाइलर निरंतर 1 के पते को निरंतर पूल में फ़ंक्शन में पास करेगा। यदि आपने फ़ंक्शन में पैरामीटर को एक मान दिया है, तो आप प्रोग्राम में विश्व स्तर पर मूल्य (इस मामले में 1 का मान) को बदल देंगे। जिससे सिर में कुछ खरोंच आई।
2+2
कर सकते हैं के बराबर 5
(के बहुत बड़े मूल्यों के लिए 2
निश्चित रूप से!)।
2+2
बराबर होगा )। 5
5
2 + 2 = 5
; यह एक सिंटैक्स त्रुटि होगी। क्या सच हो जाएगा 2 + 2 .EQ. 5
।
नहीं जानते कि क्या इसे भाषा की विशेषता माना जा सकता है, लेकिन, C ++ में टेम्पलेट्स से संबंधित लगभग कोई भी कंपाइलर त्रुटि, दैनिक आधार पर दुनिया भर के कई C ++ प्रोग्रामर को काफी मात्रा में WTF वितरित करता है :)
std::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::vector< std::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::iterator>(std::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::iterator, std::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::iterator, std::allocator<std::pair<int, std::complex> >)
C के कई नाम रिक्त स्थान:
typedef int i;
void foo()
{
struct i {i i;} i;
i: i.i = 3;
printf( "%i\n", i.i);
}
या पात्रों के साथ:
typedef char c;
void foo()
{
struct c {c c;} c;
c: c.c = 'c';
printf( "%c\n", c.c);
}
मैं कहूंगा कि पायथन की पूरी व्हाट्सएप चीज मेरी सबसे बड़ी डब्ल्यूटीएफ सुविधा है। सच है, आप अधिक-या-कम समय के बाद इसकी आदत डाल लेते हैं और आधुनिक संपादकों से निपटना आसान हो जाता है, लेकिन पिछले साल के लिए ज्यादातर पूर्णकालिक अजगर विकास के बाद भी मुझे यकीन है कि यह एक बुरा विचार था। मैंने इसके पीछे के सभी तर्क को पढ़ा है लेकिन ईमानदारी से, यह मेरी उत्पादकता के रास्ते में है। ज्यादा नहीं, लेकिन यह अभी भी काठी के नीचे एक गड़गड़ाहट है।
संपादित करें: टिप्पणियों को देखते हुए, कुछ लोगों को लगता है कि मुझे अपना कोड इंडेंट करना पसंद नहीं है। यह एक गलत आकलन है। मैं हमेशा अपने कोड पर कोई फर्क नहीं पड़ता कि क्या भाषा और क्या मैं मजबूर हूं या नहीं। मुझे जो पसंद नहीं है वह यह है कि यह इंडेंटेशन है जो परिभाषित करता है कि कोड की एक पंक्ति किस ब्लॉक में है। मैं उसके लिए स्पष्ट सीमांकक को प्राथमिकता देता हूं। अन्य कारणों के अलावा, मुझे लगता है कि स्पष्ट सीमांकक कोड को काटना और पेस्ट करना आसान बनाता है।
उदाहरण के लिए, यदि मेरे पास 4 रिक्त स्थान है और इसे 8 खंडों वाले इंडेंट के ब्लॉक के अंत में पेस्ट किया गया है, तो मेरे संपादक (सभी संपादक?) को पता नहीं है कि क्या पेस्ट किया गया कोड 8-स्पेस ब्लॉक या बाहरी से संबंधित है? खंड मैथा। OTOH, अगर मेरे पास स्पष्ट सीमांकक है तो यह स्पष्ट है कि कोड किस ब्लॉक का है और इसे कैसे (पुनः) इंडेंट किया जाना चाहिए - यह ऐसा होता है जो समझदारी से ब्लॉक डेलिमिटर की तलाश करता है।
संपादन 2: कुछ लोग जो टिप्पणियां प्रदान करते हैं, उन्हें लगता है कि यह एक ऐसी विशेषता है जिससे मैं घृणा करता हूं या मुझे लगता है कि अजगर को एक गरीब भाषा बनाता है। फिर, सच नहीं है। जबकि मुझे यह सब पसंद नहीं है, बस यही बात है। सवाल सबसे अजीब भाषा सुविधा के बारे में है, और मुझे लगता है कि यह अजीब है, इसके द्वारा कुछ बहुत, बहुत कम (लेकिन> 0) भाषाओं का उपयोग किया जाता है।
मैंने इस बारे में थोड़ा संघर्ष किया:
1;
पर्ल में, मॉड्यूल को कुछ सच लौटने की जरूरत है ।
'Cogito ergo sum';
जो सभी को पता है कि सभी संभव ब्रह्मांडों में स्व-स्पष्ट है। यह अधिकतम पोर्टेबिलिटी सुनिश्चित करता है।"
<?=1;?>
1. <?=true;?>
रिटर्न 1. <?=false;?>
रिटर्न।
मुझे आश्चर्य है कि किसी ने भी Visual Basic के 7 लूप निर्माण का उल्लेख नहीं किया है ।
For i As Integer = 1 to 10 ... Next
While True ... End While
Do While True ... Loop
Do Until True ... Loop
Do ... Loop While True
Do ... Loop Until True
While True ... Wend
क्योंकि चिपकना एक! आपकी स्थिति के सामने रास्ता बहुत जटिल है!
While
और Whend
" बनाना चाहिए था, क्योंकि कुछ लोग ऐसे हैं जो शब्द का उच्चारण करते हैं "जबकि" ध्वनिरहित लेबिरिज्ड वेलर अंदाज से। और निश्चित रूप से यह अच्छा है, और कोड है कि ऊपर लाइनों अच्छा है।
जो नहीं जानते हैं, bc
उनके लिए "मनमाना सटीक कैलकुलेटर भाषा" है, और मैं इसे त्वरित गणना के लिए अक्सर उपयोग करता हूं, खासकर जब इसमें शामिल संख्याएं बड़ी होती हैं ( $
शीघ्र होती है):
$ bc -lq
12^345
20774466823273785598434446955827049735727869127052322369317059031795\
19704325276892191015329301807037794598378537132233994613616420526484\
93077727371807711237016056649272805971389591721704273857856298577322\
13812114239610682963085721433938547031679267799296826048444696211521\
30457090778409728703018428147734622401526422774317612081074841839507\
864189781700150115308454681772032
bc
लंबे समय तक एक मानक यूनिक्स कमांड रहा है।
अब "डब्ल्यूटीएफ सुविधा" के लिए। यह man bc
(जोर मेरा) से है:
छोड़ दिया : जब छोड़ दिया बयान पढ़ा जाता है, तो bc प्रोसेसर को समाप्त कर दिया जाता है, भले ही वह कथन कहां से मिला हो। उदाहरण के लिए, "अगर (0 == 1) छोड़ दिया" बीसी को समाप्त करने का कारण होगा।
हॉल्ट : हॉल्ट स्टेटमेंट (एक एक्सटेंशन) एक निष्पादित स्टेटमेंट है, जो बीसी प्रोसेसर को केवल तभी छोड़ता है जब इसे निष्पादित किया जाता है। उदाहरण के लिए, "अगर (0 == 1) पड़ाव" को समाप्त करने के लिए बीसी का कारण नहीं होगा, क्योंकि पड़ाव निष्पादित नहीं किया जाता है।
bc
उससे पहले उपयोग करता था, और bc
मैन पेज के महान उद्धरणों के कारण अपनी पोस्ट में लिखना चाहता था ।
echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq'|dc
(हालाँकि आप यह पहले से ही जानते होंगे)।
मैं हमेशा सोचता था कि सबसे सरल कार्यक्रम क्यों था:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
जबकि यह हो सकता है:
print "Hello World!"
शायद यह पहली जगह में कंप्यूटर विज्ञान के छात्रों को डराने के लिए है ...
जावास्क्रिप्ट ऑब्जेक्ट ओरिएंटेड है, है ना? इसलिए शाब्दिक तार और संख्याओं पर चलने के तरीके काम करने चाहिए। जैसा "hello".toUpperCase()
और 3.toString()
। पता चला है कि दूसरा एक वाक्यविन्यास त्रुटि है, क्यों? चूँकि पार्सर एक संख्या की अपेक्षा करता है जिसके बाद डॉट एक फ्लोटिंग पॉइंट शाब्दिक होता है। यह डब्ल्यूटीएफ नहीं है, डब्ल्यूटीएफ यह है कि आपको इसे काम करने के लिए केवल एक और डॉट जोड़ना होगा:
3..toString()
कारण यह है कि शाब्दिक 3.
रूप में व्याख्या की गई है 3.0
, और 3.0.toString()
ठीक काम करता है।
3..__add__(4)
)। फिर मुझे लगता (3).__add__(4)
है कि यह करने के लिए बहुत कम मस्तिष्क क्षतिग्रस्त तरीका है :)
3.0.toString()
मेरी आँखों में खुजली होती है।
जावास्क्रिप्ट में:
2 == [2]
// Even stranger
2 == [[[2]]]
// And down-right nutty
var a = { "abc" : 1 };
a[[[["abc"]]]] === a["abc"]; // this is also true
सौभाग्य से stackoverflow.com पर दयालु लोगों ने मुझे पूरी बात समझाई: जावास्क्रिप्ट में 2 == [2] क्यों होता है?
===
इसके बजाय उपयोग करना चाहिए ।
Number(n)
कुछ ऐसा ही करने के लिए उपयोग कर सकते हैं । दुर्भाग्य से हमारे दोनों घोल ===
= (
मेरी सबसे बड़ी नफरत वाली विशेषता किसी भी कॉन्फ़िगरेशन फ़ाइल सिंटैक्स है जिसमें सशर्त तर्क शामिल हैं। इस तरह की बात जावा दुनिया में व्याप्त है (चींटी, मेवेन, आदि। आप जानते हैं कि आप कौन हैं!)।
आप सीमित एसी डीबगिंग और सीमित संपादक समर्थन के साथ एसी ** पी भाषा में प्रोग्रामिंग समाप्त करते हैं।
यदि आपको अपने कॉन्फ़िगरेशन में तर्क की आवश्यकता है, तो एक वास्तविक भाषा में कॉन्फ़िगरेशन को कोड करने का "पायथोनिक" दृष्टिकोण बहुत बेहतर है।
पॉवरबेसिक (www.powerbasic.com) में कंपाइलर निर्देश शामिल हैं:
# BLOAT {bloatsize}
यह <bloatsize>
बाइट्स द्वारा संकलित निष्पादन योग्य के आकार को बढ़ाता है । यह संकलक में डाल दिया गया था जब लोगों को निष्पादन योग्य बनाने से उत्पन्न निष्पादन योग्य के छोटे आकार को पसंद नहीं है। यह EXE फूला हुआ प्रोग्रामिंग भाषाओं के साथ प्रतिस्पर्धा करने के लिए बड़ा लगता है :)