2011-08-25 11 views
7

Python, Perl ve Ruby gibi dillerle ilgili çok az deneyimim var, fakat bir süredir Smalltalk'ta geliştirdim. Çok popüler ve çapraz Smalltalk uygulaması olan bazı oldukça basit Smalltalk sınıfı vardır:Smalltalk, Perl, Python ve Ruby arasındaki koleksiyonlar ve Akış sınıfları eşdeğerleri

FileStream 
ReadWriteStream 
Set 
Dictionary 
OrderedCollection 
SortedCollection 
Bag 
Interval 
Array 

Python, Perl ve Ruby eşdeğer veya geçerli semantik değiştirmeler hangi sınıfları olurdu? Sözdizimi karşılaştıran birkaç dil karşılaştırma sayfası buldum, ancak çekirdek ve temel kütüphanelerin tercümesi söz konusu olduğunda çok az yardım var gibi görünüyor.

Ayrıca, Smalltalk veya viceversa'da bulunmayan Python, Perl veya Ruby'de bir temel veya çekirdek sınıfı olup olmadığını merak ediyorum.

+1

Açıkçası sadece faydalı bir soruyu cevaplamak için diğer dillerin one_ biraz Smalltalk ve _any bazı öğrenmeliler (cevaplardan). Ve "kabul edilme olasılığı düşük" olsa bile bir yanıt göndermede değer var. "Doğrudan cevaplanamayacak kadar açık" olduğunu düşünüyorsanız, kapanmaya oy vermeliydin. – agf

+0

İddialarınızı anlamıyorum. Açıklayabilir misin? Belirli ve açık cevaplarla özel bir soru gibi görünüyor. – user869097

+0

Artık silinmiş bir yoruma yanıt veriyorum. – agf

cevap

7

Perl

ben Perl ve Smalltalk hem akıcı yaşından beri, Perl için cevap olacak.

Smalltalk adlı sözlük, Perl's hash türüne oldukça yakındır. Bir sözlük, tuşlar için nesne eşdeğerini kullanır. Perl, tuşlar için basit dizeler kullanır, bu yüzden esneklik biraz sınırlıdır.

Smalltalk'ın OrderedCollection, Perl'ın dizi türüne oldukça yakındır.

Smalltalk FileStream, bir dış veri veya aygıt için bir veri akışını temsil ettiği için, Perl'nin dosya kümeleri gibidir.

Perl'in yalnızca karma ve diziler ve dosya yapıları olduğundan, bu konuyla ilgili. :)

+0

Hash :: Util :: FieldHash işlevlerini kullanarak, CLONEing'te kalan nesneler ve diğer türler için sayısal göstergeler ve başvurulan nesne ile birlikte GCed olsun, karma değerleri alabilirsiniz. – MkV

+0

En uygun CPAN modüllerinin adlarını ekleyin. – daxim

2

Python

FileStream -> file 
ReadWriteStream -> file 
Set -> set 
Dictionary -> dict 
OrderedCollection -> list 
SortedCollection -> no equivalent object (must call sort on a list) 
Bag -> no equivalent object (must implement using dict) 
Interval -> no equivalent object (but a range() function exists for making lists) 
Array -> no equivalent (tuple is read-only, fixed length. list is variable length) 

Ben Bag eşdeğerdir Python 2.7 için bir collections.Counter nesne olduğunu da belirtmeliyiz.

+0

'heapq' kısmen sıralanmış bir koleksiyon. Array.array, smalltalk Array gibi mi? Ayrıca, 'collections.Counter' (Python 2.7) bir çanta olduğunu düşünüyorum. Interval için 'dilim' ya da 'islice' ne olacak? – agf

+0

Python dizisi.array yakındır, ancak yalnızca aynı türdeki nesneleri tutar. Dilimin Aralık için nasıl yer değiştireceğinden emin değilim. Bununla birlikte düşünmek, xrange daha uygun bir eşdeğer olabilir. Ancak, aralık Python 3.0'da gelişmiş bir xrange() haline dönüşüyor. – David

4

Yakut

FileStream   -> File 
ReadWriteStream -> IO (or other things that duck type like it) 
Set    -> require 'set', then use the Set class 
Dictionary   -> Hash 
OrderedCollection -> Array 
SortedCollection  nothing similar 
Bag     nothing similar 
Interval   -> Range 
Array     Ruby has no fixed-length collection class. 
İlgili konular