मुझे लगा कि OOP की आधारशिला में से एक यह है कि, हमारे पास वस्तुएं हैं, जो आइटम हैं जिनसे हम निपटने में रुचि रखते हैं, और फिर हम उन्हें संदेश भेजते हैं।
तो यह स्वाभाविक लग सकता है कि, मेरे पास वस्तुओं का एक संग्रह है, और मुझे उन्हें एक स्ट्रिंग में रखने की आवश्यकता है, इसलिए ऐसा करने के लिए:
["x", "o", "o"].join(" | ") # joining a tic-tac-toe row in Ruby
(स्मालटाक इसे वैसे ही करता है)। " | "
में किसी तरह एक तर्क, एक कि यह कैसे शामिल होने के लिए की निशानी के रूप में के बारे में सोचा है। यह " "
बहुत कम हो सकता है, अगर गेम बोर्ड सरल होना है। इसलिए जुड़ने वाला तत्व " | "
विशेष रूप से कुछ ऐसा नहीं है जिसमें हमारी रुचि है - यह कार्यक्रम में मुख्य वस्तुएं नहीं हैं जिनका विशेष महत्व या महत्व है।
यदि पायथन इसका उपयोग करता है
" | ".join(["x", "o", "o"])
यह कुछ अजीब लगता है कि यह लगभग महसूस करता है कि हम तर्क के लिए एक संदेश पारित कर रहे हैं, कुछ के बारे में तर्क बताने के लिए। शायद पायथन अधिक प्रक्रियात्मक है? हमारे लिए कुछ ड्यूटी करने के लिए ज्वाइनिंग स्ट्रिंग बताने के लिए?
क्या यह कार्यान्वयन को बचाने के लिए है, ताकि हमारे पास join
प्रत्येक संग्रह वर्ग के लिए परिभाषित न हो? लेकिन क्या यह सच नहीं है कि हम किसी भी संग्रह वर्ग के लिए एक बार लिख सकते हैं, जैसे कि रूबी में:
module Enumerable
def my_join(joiner)
self.inject {|a,b| a.to_s + joiner + b.to_s}
end
end
(कुछ इस तरह से, to_s
प्रत्येक आइटम पर कॉल करना, to_s
प्रत्येक वर्ग पर भरोसा करना अपनी खुद की उचित बात करने के लिए, एक स्ट्रिंग में बदलने के लिए, और फिर उन्हें संक्षिप्त करना)। तो फिर हम स्ट्रिंग, हैश, या सेट, या जो भी संग्रह वर्ग है के प्रत्येक के लिए लागू करने की जरूरत नहीं है।
या क्या पायथन ठीक से ओओपी मार्ग पर नहीं जाता है? इसका उपयोग करता है len("abc")
और type([])
इसके बजाय "abc".len()
या [].type()
पायथन 3 में भी ऐसा लगता है। क्या पायथन एक डिजाइन कारण के लिए इस तरह से करता है?
Maybe Python is more procedural?
पाइथन कुछ क्रियात्मक परिवर्धन के साथ एक प्रक्रियात्मक भाषा थी ("पायथन ने लैम्ब्डा, कम (), फिल्टर () और मैप (), एक लिस्प हैकर के सौजन्य से जो उन्हें याद किया और वर्किंग पैच प्रस्तुत किया") तब तक जब तक वह संस्करण में प्रकट नहीं होता है 2. यह पहली बार काम करने के बाद लगभग डेढ़ दशक बाद था।